永发信息网

稳妥构造函数模式和工厂模式创建对象有什么区别

答案:1  悬赏:20  手机版
解决时间 2021-02-21 19:53
稳妥构造函数模式和工厂模式创建对象有什么区别
最佳答案
题主可以看下《javascipt高级程序设计》第6.2章[创建对象]部分,我也是名初学者,回答如有误请各位大大帮忙指出 ^_^ 。 题主想弄清问题需要了解下工厂模式、稳妥构造函数模式与寄生构造函数模式三种方法的差异; 工厂模式: function createPerson( name, age, job ) { var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function() { alert(this.name); } return o; } var person1 = createPerson("Nicholas", 29, "software Engineer"); var person2 = createPerson("Greg", 27, "Doctor"); person1.sayName(); //"Nicholas" person2.sayName(); //"Greg" 寄生构造函数模式: var person1 = new createPerson("Nicholas", 29, "software Engineer"); 寄生构造函数模式与工厂模式的区别是使用了new操作符把createPerson函数作为构造函数,其实是跟工厂模式一模一样的。 稳妥构造函数模式: function Person( name, age, job ) { var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function() { alert(name); //注意这里没有了“this”; }; return o; } var person = Person("Nicholas", 29, "software Engineer"); Person.sayName(); //"Nicholas" 稳妥构造函数采用的是与寄生构造函数模式相似的模式,除了下列两点不同: 1.创建对象的实例方法不引用this; 2.不使用new调用构造函数; 所以构造函数适合在禁用this和new的环境中使用(或者说设计的出发点)。 特性: *由于添加方法时去掉了"this",即使修改所创建对象的属性: person.name = "Greg"; 也可以通过sayName方法访问创建对象时的原始数据: person.sayName(); //仍为“Nicholas” 三种模式都不能确定所创建对象的类型,题主想了解更多可以在高级程序设计书中了解。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
宁陵县宏力通信工程有限公司在什么地方啊,我
套房风水布局
水利工程项目施工管理机制中,必须是承包人本
请问各位GG,MM,
德源电子地址在什么地方,想过去办事
从绵阳火车站到中江滴滴打车得多少钱
首席造型我想知道这个在什么地方
黄金做空怎么赚钱
找一部朱茵主演的电影
左卵巢27*25*22 mm 右卵巢28*25*20mm 是否
科目二没学会可以去模拟吗
农村信用社ATM在哪里啊,我有事要去这个地方
新买的三星W999怎么电信卡读不出来呢?是程序
【庆阳是哪个省的】甘肃省内与庆阳市唯一相邻
太和堂平价药店(古山世雅卫生室东南)地址在什
推荐资讯
踮字怎么组词?二个字
中国电信环西街合作营业厅在哪里啊,我有事要
昆明湖静的像一面镜子,绿的像一块碧玉,是什
南京入口(S49新扬高速入口东南向)地址在哪,
狮子女2015年12月份性欲指数
下载金立闹钟录音
有西安科技大学文科生吗?
压力容器安全阀每周手动试验一次,是使用人做
刘翔究竟怎么了?
想做时尚编辑,应该准备些什么?谢谢。
中央美术学院油画系容易考么
口袋妖怪黑白 盔甲鸟
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?