工厂模式与构造方式

工厂模式与构造方式

得到一个对象时,都是调用一个函数,传入参数,就行了。

工厂模式里面还多出一步new Object(),还要return.

那么工厂模式的优势在哪里呢?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

看起来是有些相似,但是构造函数与工厂函数之间差异如下:
(1)工厂模式需要创建对象,以及必须有返回值
(2)工厂模式针对的都是Object的对象模型,而构造方式可以匹配自定义的对象模型
(3)构造方式弊端,如果在全局中定义相同的局部变量,容易造成全局污染,因为this.xx如果在局部获取不到,就会去全局中获取
(4)构造方式可以重写,可以在全局中添加新属性和方法Person.prototype = {},但工厂函数只能在局部添加

并且,一般情况下,构造函数用于大型项目,属性以及方法时常变换的项目;工厂模式用于小型项目,或者正在制作过程还没有成型的项目

不同的模式,根据项目去选择即可

希望可以帮到你!

卡布琦诺 2019-08-16 19:18:12

老师给你举一个例子,帮助你理解

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("imooc", 29, "teacher"); 
var person2 = createPerson("aimi", 27, "Doctor");

在这段代码中使用了工行模式,函数 createPerson() 能够根据接受的参数来构建一个包含所有必要信息的 Person 对象,可以无数次地调用这个函数,而每次它都会返回一个包含三个属性一个方法的对象,因此有点呢,就是可以解决创建多个相似对象的问题

希望可以帮到你!

  • 提问者 午炎子栩 #1
    可是,构造函数也一样啊 function person(name,age,job){ }
    2019-08-17 16:33:17
  • 提问者 午炎子栩 #2
    function person(name,age,job){ this.name = name; this.age = age ;this.job = job;this.asyName= function(){ alert(this.name);} var person1 = new person("imooc",29,"teacher"); var person2 = new person("aimi",27,"Doctor"); 同样可以无数次的new出一个对象,童谣得到一个包含三个属性一个方法的对象啊。代码没见多,结果也一样。
    2019-08-17 16:37:34
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师