首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构造模式与原型模式的区别

构造模式与原型模式的区别
EN

Stack Overflow用户
提问于 2016-01-28 09:42:34
回答 4查看 5.5K关注 0票数 12

所以我试着用不同的方法来创建一个对象。

我研究了创建对象的Protoype模式。

现在我在下面写了两个函数,但是我看不出两者之间的功能区别是什么?您什么时候使用构造器模式,什么时候使用原型模式?

构造器模式

代码语言:javascript
复制
function Fruit(){}
Fruit.color = "Yellow",
Fruit.fruitName = "Banana",
Fruit.nativeTo = "SomeValue"

原型模式

代码语言:javascript
复制
function Fruit(){}
Fruit.prototype.color = "Yellow",
Fruit.prototype.fruitName = "Banana",
Fruit.prototype.nativeTo = "SomeValue"
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-01-28 09:45:58

组件的可重用性.

构造器

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

原型

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

这是一个很好的解释:Javascript prototypes and instance creation

什么时候使用每一种模式都是基于需求--非常模糊的回答,但绝不少的情况。

想想对象、函数、数组--它们在整个JS中被使用,并认为它们存在于原型链上,就像我们希望传播给它们的任何变化一样--这就是为什么我们不应该改变它们的原因,因为它会破坏它们的行为。

这里最好的解释: keyword

票数 20
EN

Stack Overflow用户

发布于 2016-01-28 09:51:09

prototype属性的更改将适用于所有实例,包括已经存在的实例,其中构造函数创建的属性的更改只对实例进行更改。

票数 2
EN

Stack Overflow用户

发布于 2016-01-28 10:03:32

构造器

基本上,构造函数用于使用new操作符创建对象。

它用来初始化constructor.So的实例属性,使用new的constrctor只不过是面向对象语言(如C++、JAVA )的实现。

每个构造函数都有包含对构造函数引用的属性prototype

原型

JavaScript缺乏基于类的继承。

在JavaScript中,为了实现inheritance,我们使用了用于实现单层继承的Prototype

因此,要在JavaScript中实现代码的可重用性,prototype is used.It就是原型继承.

在原型继承中,从同一个构造函数创建的对象可以立即使用在原型上添加的方法或属性。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35057827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档