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 * 适用场景: 需要创建多个类型确定的对象