JS对象创建模式

JS的对象创建模式

1.Object构造函数模式

1 var person = new Object();
2 
3 person.name = 'name';
4 person.age = 43;
5 
6 console.log(person);

分析:

1   * 套路: 先创建空Object对象, 再动态添加属性/方法
2   * 适用场景: 起始时不确定对象内部数据
3   * 问题: 语句太多

2.对象字面量

1 var person1 = {
2   name:'person1',
3   age:41
4 }
5 
6 var person2 = {
7   name:'person2',
8   age:2
9 }

分析:

1   * 套路: 使用{}创建对象, 同时指定属性/方法
2   * 适用场景: 起始时对象内部数据是确定的
3   * 问题: 如果创建多个对象, 有重复代码

3.工厂模式

 1 function Person(name,age){
 2 
 3   return {
 4     name: name,
 5     age: age
 6   }
 7 }
 8 
 9 var person1 = new Person('person1',4);
10 var person2 = new Person('person2',5);

分析:

1   * 套路: 通过工厂函数动态创建对象并返回
2   * 适用场景: 需要创建多个对象
3   * 问题: 对象没有一个具体的类型, 都是Object类型

4.自定义构造函数模式

1 function Person(name,age){
2 
3   this.name = name;
4   this.age = age;
5 }
6 
7 var person1 = new Person('person1',55);

分析:

1   * 套路: 自定义构造函数, 通过new创建对象
2   * 适用场景: 需要创建多个类型确定的对象
3   * 问题: 每个对象都有相同的数据, 浪费内存

5.构造函数加原型的组合模式

 1     function Person(name, age) {
 2 
 3       this.name = name;
 4       this.age = age;
 5     }
 6 
 7     Person.prototype.eat = function(){
 8       console.log('person eat');
 9     }
10 
11     var person1 = new Person('person1', 55);
12 
13     person1.eat();

分析:

1   * 套路: 自定义构造函数, 属性在函数中初始化, 方法添加到原型上
2   * 适用场景: 需要创建多个类型确定的对象

猜你喜欢

转载自www.cnblogs.com/zhihaospace/p/12005264.html