创建多个对象的方案
1:new Object()和字面量方式 此处就不在举例,使用这两个方式会创造大量重复的代码
2:工厂模式 举例说明
1 function Createperson(name, age, address) { 2 var p = new Object() 3 p.name = name 4 p.age = age 5 p.address = address 6 p.eating = function() { 7 console.log(this.name + '在吃饭'); 8 } 9 return p 10 } 11 var p1 = Createperson('张三', 12, '广州') 12 var p2 = Createperson('李四', 18, '深圳') 13 var p3 = Createperson('王五', 24, '上海') 14 console.log(p1); 15 console.log(p2); 16 console.log(p3);

使用工厂模式减小了代码重复量,但是有个缺点,可以看到打印出来的对象没有类型,所以使用工厂模式获取不到对象最真实的类型
3:构造函数(constructor---构造器) 通过new的方式
1 function Person(name, age, address) { 2 this.name = name 3 this.age = age 4 this.address = address 5 this.eating = function() { 6 console.log(this.name + '在吃饭'); 7 } 8 } 9 var p1 = new Person('张三', 12, '广州') 10 var p2 = new Person('李四', 18, '深圳') 11 var p3 = new Person('王五', 24, '上海') 12 console.log(p1); 13 console.log(p2); 14 console.log(p3);

构造模式 把对象类型也打印出来了
注意:构造函数的首字母一般要大写,构造函数的大概过程就是 new 了一个{} 再this={} 然后把代码体放进去 最后会自动 return this 所以构造函数不用return
构造函数也有缺点
给上面代码加上
console.log(p1.eating == p2.eating);值为false
这说明构造函数给每个对象都创建了一个新的函数对象,这是比较浪费空间的

浙公网安备 33010602011771号