构造函数模式和原型模式之间的区别

Mar*_*sma 8 javascript object

所以我试图围绕创建对象的不同方式.

我开始使用Protoype模式来创建对象.

现在我在下面编写了两个函数,但我看不出两者之间的功能差异是什么?您何时使用构造函数模式以及何时使用Prototype模式?

构造函数模式

function Fruit(){}
Fruit.color = "Yellow",
Fruit.fruitName = "Banana",
Fruit.nativeTo = "SomeValue"
Run Code Online (Sandbox Code Playgroud)

原型模式

function Fruit(){}
Fruit.prototype.color = "Yellow",
Fruit.prototype.fruitName = "Banana",
Fruit.prototype.nativeTo = "SomeValue"
Run Code Online (Sandbox Code Playgroud)

Ste*_*how 15

组件的可重用性......

构造函数

当您创建新的构造函数时,您将创建一个新的实例,重要的是,对实例所做的任何更改都只会影响它们,而不会影响其他实例.

原型

当您使用原型创建新对象时,它将重用逻辑,对原型链的任何更改都将影响其他所有人.

这是一个很好的解释:Javascript原型和实例创建

何时使用每种模式都是基于需求 - 非常模糊的答案,但从来没有这种情况.

想想它们在整个JS中使用的对象,函数,数组,并且它们可以理解它们存在于原型链中,因为我们想要传播它们对它们的任何改变 - 侧面注释:这就是为什么我们永远不应该将它们改为它可以搞砸他们的行为.

这里有最好的解释:JavaScript构造函数,原型和new关键字