创建多个对象的方案

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 @   沁霓  阅读(81)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示