所以我试着用不同的方法来创建一个对象。
我研究了创建对象的Protoype模式。
现在我在下面写了两个函数,但是我看不出两者之间的功能区别是什么?您什么时候使用构造器模式,什么时候使用原型模式?
构造器模式
function Fruit(){}
Fruit.color = "Yellow",
Fruit.fruitName = "Banana",
Fruit.nativeTo = "SomeValue"原型模式
function Fruit(){}
Fruit.prototype.color = "Yellow",
Fruit.prototype.fruitName = "Banana",
Fruit.prototype.nativeTo = "SomeValue"发布于 2016-01-28 09:45:58
组件的可重用性.
构造器
当您创建一个新的构造函数时,您将创建所有东西的新实例,更重要的是,对实例所做的任何更改只会影响它们,而不会影响其他实例。
原型
当您使用原型创建一个新对象时,它将重用逻辑,对原型链的任何更改都会影响到其他所有人。
这是一个很好的解释:Javascript prototypes and instance creation
什么时候使用每一种模式都是基于需求--非常模糊的回答,但绝不少的情况。
想想对象、函数、数组--它们在整个JS中被使用,并认为它们存在于原型链上,就像我们希望传播给它们的任何变化一样--这就是为什么我们不应该改变它们的原因,因为它会破坏它们的行为。
这里最好的解释: keyword
发布于 2016-01-28 09:51:09
prototype属性的更改将适用于所有实例,包括已经存在的实例,其中构造函数创建的属性的更改只对实例进行更改。
发布于 2016-01-28 10:03:32
构造器
基本上,构造函数用于使用new操作符创建对象。
它用来初始化constructor.So的实例属性,使用new的constrctor只不过是面向对象语言(如C++、JAVA )的实现。
每个构造函数都有包含对构造函数引用的属性prototype。
原型
JavaScript缺乏基于类的继承。
在JavaScript中,为了实现inheritance,我们使用了用于实现单层继承的Prototype。
因此,要在JavaScript中实现代码的可重用性,prototype is used.It就是原型继承.
在原型继承中,从同一个构造函数创建的对象可以立即使用在原型上添加的方法或属性。
https://stackoverflow.com/questions/35057827
复制相似问题