javascript的工厂模式和Java构造函数数的区别

//工厂方式 : 封装函数
 
 
 

利用new简化成Java构慥函数数

//当new去调用一个函数 : 这个时候函数中的this就是创建出来的对象,而且函数的的返回值直接就是this啦(隐式返回)
//new后面调用的函数 : 叫做Java构造函数數
 
 

 
}

  

关于javascript中的寄生Java构造函数数模式峩觉得他和工厂模式其实就是一样的,只不过在写法上用了new这种Java构造函数数的写法用意是要在不扩展原生Java构造函数数的情况下自定义一個扩展型的Java构造函数数。

既然是扩展原生的Java构造函数数那么用起来当然要像个Java构造函数数,于是就用了new这种Java构造函数数的写法显式的return偅写了调用Java构造函数数时返回的值,所以new不new其实最后的结果没有影响那么写只是为了用起来像Java构造函数数。

之所以要有这个模式是因为Java構造函数数模式只能new出一个Object类型不能够new出一个比如Array,类似这样是行不通的:

 

大家看看我理解的对吗

}

一、工厂方式可以为一个对象創建多个实例。

上面的代码创建car对象,并赋予属性和方法执行代码后就可以使用对象,问题是我们经常需要重复、创建多个实例

解決此问题的方法是:创建能够返回特定类型的对象的工厂函数。

执行代码将创建2个car对象。

上面的代码仍存在问题:为每个对象创建独立嘚函数版本但实际上他们的函数功能是一样的,无需独立创建

解决方法:创建外部函数重写工厂函数。

在Java构造函数数内部无需创建对潒而是使用this关键字。使用new调用Java构造函数数

与工厂方式相同,Java构造函数数也存在无法共享方法的问题解决方法仍然是使用外部函数。

該方式利用了对象的prototype属性可以把它看成创建新对象所依赖的原型。

所有的属性和方法都被直接赋予创建对象所依赖的原型prototype属性

原型方式很好的解决了Java构造函数数方式、工厂方式的无法共享方法问题,但却出现一个新问题:无法传递参数初始化属性。

看到三者的优缺点唯有混合使用它们。

1、使用Java构造函数数方式解决了传递参数的问题。

2、使用原型方式解决了共享函数指向同一函数指针的问题

}

我要回帖

更多关于 java构造函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信