首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >原型混淆:受子原型影响的父原型属性

原型混淆:受子原型影响的父原型属性
EN

Stack Overflow用户
提问于 2012-04-08 09:27:54
回答 2查看 112关注 0票数 2

我正在读一本关于OOP javascript的书,我被其中的一个例子卡住了。

在示例代码的第一个版本中,创建了Shape构造函数的一个新实例,并调用了toString方法。toString方法返回"Triangle“,它是Triangle原型的name属性,即使"Shape”应该是Shape原型的name属性。

在示例代码的第二个版本中,toString方法按预期返回"Shape“。我想知道代码的第二个版本中的更改有什么不同,因为似乎在两个版本的示例代码中,Triangle原型都包含对Shape原型的引用,因此Shape原型的name属性仍然会因为Triangle.prototype.name = "Triangle";而更新为“Triangle

第一个版本:jsfiddle

第二个版本:jsfiddle

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-08 10:58:07

在第二个例子中,当你赋值Triangle.prototype = new F();时,一个新的F function实例已经被创建,它继承了Shape的原型,这意味着Triangle.prototype中的任何更改都将反映在该对象实例中,但不会反映在F's constructor中,因为对象实例不能更改其构造函数,但如果您在constructor's prototype/Shape.prototype中更改,则由该构造函数创建的任何对象也将被反映。但如果你被分配了Triangle.prototype = F.prototype,情况可能会有所不同。

我做了一些修改,。希望它能帮助你理解,请看控制台。

票数 1
EN

Stack Overflow用户

发布于 2012-04-08 09:41:17

在第二个示例中,Triangle.prototype获得了一个新的引用-- new F()。因此,与第一个示例不同,Triangle.prototype实际上是一个与Shape.prototype不同的引用。

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

https://stackoverflow.com/questions/10059713

复制
相关文章

相似问题

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