javascript中的工厂模式和构造函数有什么区别? 20

什么是类型识别?完全看不出有什么区别啊。。。我就是在类型识别这里卡住了。。。求解。。。... 什么是类型识别?完全看不出有什么区别啊。。。我就是在类型识别这里卡住了。。。求解。。。 展开
 我来答
sososo的解答
2014-06-23 · 提供各种美女图片欣赏
sososo的解答
采纳数:142 获赞数:735

向TA提问 私信TA
展开全部

工厂模式:就是把参数传进去后。进过一系列的处理。然后得到想要的结果。然而。他这样会很消耗资源。每一次的创建都会创建空间。也就是user.speak=function这边。这样会降低性能。

构造函数也叫混合模式。是通过prototype方法把需要添加的函数在外部添加。也就是不论实例化多少的对象。也不会占用空间。不会消耗性能。

追问
prototype是原型模式了吧。。。
追答
混合动态构造函数/原型模式!知道了么?
百度网友2571d37bb
推荐于2016-05-20 · 知道合伙人软件行家
百度网友2571d37bb
知道合伙人软件行家
采纳数:1971 获赞数:7905
前端工程师

向TA提问 私信TA
展开全部

虽然Object构造函数或对象字面量都可以创建单个对象,但是这些方式有个明显的缺点:使用同一个接口创建很多对象,会产生大量重复的代码。为了解决这个问题,就可以使用工厂模式来创建对象。

1.工厂模式:

    在ECMAScript中是无法创建类的,开发人员就发明了一种函数,用函数来封装特定接口创建对象的细节。

function createPerson(name, age, job) {
    var o = new Object();
    o.name = name;
    o.age = age;
    o.job = job;
    sayName = function () {
        alert(this.name);
    };
    return o;
}
var person1 = createPerson('zxj', 23, "Software Engineer");
var person2 = createPerson('sdf', 25, "Software Engineer");

在示例中我们可以看到,工厂模式虽然解决了创建多个相似对象的问题,但没有解决对象识别的问题(在示例中,得到的都是o对象,对象的类型都是Object)。

2.构造模式:

    ECMAScript中的构造函数可以用来创建特定类型的对象。像Object和Array的原生的构造函数,在运行时会自动出现在执行环境中。此外,也可以创建自定义的构造函数,从而定义自定义对象类型的属性和方法。代码如下所示:

function createPerson(name, age, job) {
    this.name = name;
    this.age = age;
    this.job = job;
    sayName = function () {
        alert(this.name);
    };
}
var person1 = new Person('zxj', 23, "Software Engineer");
var person2 = new Person('sdf', 25, "Software Engineer");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
市委办的人
2014-11-14
知道答主
回答量:2
采纳率:0%
帮助的人:2616
展开全部

给你看个例子

稳妥构造函数模式的写发

function person(name,age,sex){
var o=new Object();
o.name=name;
o.age=age;
o.sex=sex;
o.sayName=function(){
console.log(name);
}
return o;
}
var haj=person("haj",29,"M");
haj.sayName();//haj
haj.name="haj1";
haj.sayName();//haj
console.log(haj.name);//haj1

上面修改了haj.name的属性 但是下面的sayName方法并没有改变值

 再看看工厂模式

function person(name,age,sex){
var o=new Object();
o.name=name;
o.age=age;
o.sex=sex;
o.sayName=function(){
console.log(this.name);//这里用了this,sayName方法调用的值会变
}
return o;
}

着就是工厂模式和稳妥构造函数的区别吧!

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式