gpt4 book ai didi

javascript - 原型(prototype)困惑 : parent prototype property affected by child prototype

转载 作者:行者123 更新时间:2023-11-30 05:58:52 29 4
gpt4 key购买 nike

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

在示例代码的第一个版本中,Shape 的一个新实例构造函数被创建并且 toString方法被调用。 toString方法返回“三 Angular 形”,即 name Triangle 的属性(property)原型(prototype),即使“形状”应该是 name Shape 的属性(property)原型(prototype)。

在示例代码的第二个版本中,toString方法按预期返回“形状”。我想知道代码的第二个版本中的更改是如何产生差异的,因为在示例代码的两个版本中似乎都是 Triangle原型(prototype)持有对 Shape 的引用原型(prototype)所以name Shape 的属性(property)由于 Triangle.prototype.name = "Triangle";,原型(prototype)仍将更新为“三 Angular 形”

第一个版本:jsfiddle

第二个版本:jsfiddle

最佳答案

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

我做了一些更改 here .希望它能帮助你理解,在控制台中看到。

关于javascript - 原型(prototype)困惑 : parent prototype property affected by child prototype,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10059713/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com