JS基础巩固系列:【5】js创建对象的几种方法

使用Object函数创建

1
2
3
var person = new Object();
person.name = 'zhangsan';
person.age = 14;

缺点:大量的重复代码

使用对象字面量创建

1
2
3
4
var person = {
name: 'zhangsan',
age: 14
}

缺点:大量的重复代码

使用工厂模式创建

1
2
3
4
5
6
7
function createPerson(name, age){
var o = new Object();
o.name = name;
o.age = age;
return o;
}
var person = createPerson('zhangsan', 14)

优点:解决了代码量大的问题
缺点:生成的对象缺乏识别性

使用自定义构造函数模式创建

1
2
3
4
5
6
7
8
function Person(name, age){
this.name = name;
this.age = age;
this.sayName = fucntion(){
alert(this.name)
}
}
var person = new Person('zhangsan', 14)

优点:对象有了识别性
缺点:sayName这个方法每次都会生成一次,浪费内存

使用原型模式创建

1
2
3
4
5
6
7
8
9
function Person(){}
Person.proptotype = {
name: 'zhangsan',
age: 14,
sayName: fucntion(){
alert(this.name)
}
}
var person = new Person()

优点:将共有的属性和方法抽到了原型上,避免了重复声明
缺点:生成的对象都是一致的,没有了自定义的属性

使用原型模式和构造函数创建

1
2
3
4
5
6
7
8
9
function Person(name, age){
this.name = name;
this.age = age
}
Person.proptotype.sayName = fucntion(){
alert(this.name)
}
var person1 = new Person('zhangsan', 14);
var person2 = new Person('lisi', 14);

优点:将共有的属性和方法抽到了原型上,自定义的属性通过构造函数重新声明,这是目前使用最广泛、认同度最高的方法