工厂模式
|
|
缺点:
- 无法无法确定对象的类型(因为都是Object)
- 创建的多个对象之间没有关联。
构造函数模式
|
|
缺点:
- 多个实例重复创建方法,无法共享。
- 多个实例都有sayName方法,但均不是同一个Function的实例。
原型方法
|
|
缺点:
- 无法传入参数,不能初始化属性值。
- 如果包含引用类型的值时,改变其中一个实例的值,则会在所有实例中体现。
组合式(构造函数+原型方法)推荐使用
|
|
说明:
if语句中只会调用一次,就是在碰到第一个实例调用方法时会执。此后所有实例都会共享该方法。在动态原型方法下,不能使用对象字面量重写原型。
寄生构造函数
寄生构造函数,其实就是工厂模式+构造函数模式,这种模式比较通用,但不能确定对象关系,所以,在可以使用之前所说的模式时,不建议使用此模式
在什么情况下使用寄生构造函数比较合适呢?假设要创建一个具有额外方法的引用类型,例如直接String.prototype.addstring,可以通过寄生构造的方式来添加.
|
|
稳妥构造函数
在一些安全环境中,比如禁止使用this和new,这里的this是构造函数里不使用this,这里的new
是在外部实例化构造函数时不使用new,这种创建方式叫做稳妥构造函数.
|
|
本文结束,感谢阅读。
本文作者:melody0z
本文链接:https://melodyvoid.github.io/JavaScript/contrast-the-advantages-and-disadvantages-of-several-ways-of-creating-objects.html
欢迎转载,转载请注明文本链接