创建多个对象的方案

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
这说明构造函数给每个对象都创建了一个新的函数对象,这是比较浪费空间的
posted @ 2022-03-18 14:26  沁霓  阅读(89)  评论(0)    收藏  举报