我试图了解 javascript 原型设计和可能的继承,但我肯定错过了一些东西。让我们从简单的构造函数(函数 Counter())开始,添加简单的属性和对象的实例化:
function Counter() { this.a = "first"; };
Counter.prototype.b = "second";
var counter = new Counter();
此时,counter.a
返回“first”,counter.b
返回“second” counter.c
,当然undefined
这一切都可以理解。让我们在构造函数的原型中添加另一个属性:
Counter.prototype.c = "third";
现在,counter.c
将返回“第三”。但是......我们改变了主意,让我们摆脱这些属性:
Counter.prototype = {};
使用简单的逻辑,在覆盖counter
原型的prototype
属性时,我们会丢失counter
之前添加到 Counter.prototype 中的属性。但事实并非如此 -counter.c
返回“第三个”。我在这里迷路了。所以......让我们尝试覆盖该值:
Counter.prototype.c = "fourth hohoho";
没有任何变化,counter.c 仍然返回“第三”。
为什么删除属性没有成功?我错过了什么?