html5中什么是工厂函数,构造函数与工厂函数

基本区别在于构造函数与new关键字(这会导致JavaScript自动创建一个新对象,设置this在函数中传递给该对象,并返回该对象):var objFromConstructor = new ConstructorFunction();

工厂函数被称为“常规”函数:var objFromFactory = factoryFunction();

但要将其视为“工厂”,则需要返回某个对象的一个新实例:如果它只是返回一个布尔值或其他东西,则不会称它为“工厂”函数。这种情况不会自动发生。new,但它确实允许在某些情况下具有更大的灵活性。

在一个非常简单的例子中,上面引用的函数可能如下所示:function ConstructorFunction() {

this.someProp1 = "1";

this.someProp2 = "2";}ConstructorFunction.prototype.someMethod = function() { /* whatever */ };function factoryFunction() {

var obj = {

someProp1 : "1",

someProp2 : "2",

someMethod: function() { /* whatever */ }

};

// other code to manipulate obj in some way here

return obj;}

当然,您可以使工厂函数比那个简单的例子复杂得多。

有些人喜欢把工厂函数用于任何事情,仅仅因为他们不喜欢记住使用new(编辑:这可能是个问题,因为没有new该函数仍将运行,但不像预期的那样运行)。我不认为这是一种优势:new是语言的核心部分,所以对我来说,刻意避免它是有点武断的-也许最好避免使用其他关键字,比如else.

工厂函数的一个优点是,根据某些参数,要返回的对象可以有几种不同的类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值