1
我想让我的头绕过面向对象编程中的Javascript并碰到以下问题:(这是Stoyan Stefanov的书中可以找到的简化示例)对象在JavaScript中覆盖原型时存在两种状态
我创建一个构造函数来创建狗对象:
function Dog(){
this.tail = true;
}
然后我实例使用犬构造函数的对象:
var benji = new Dog();
然后我一个新的属性分配给犬的原型对象:
Dog.prototype.shout = 'Woof!';
现在,石磊同时访问的尾巴,还有呼喊,符合市场预期。一切都很好,直到我覆盖狗的原型:
Dog.prototype = {paw : 4};
现在,benji.paw变得未定义。我的问题是,benji不应该访问新的原型对象吗?更重要的是莫名其妙的是,当我创建狗的新实例原型对象后,被重新定义:
var lucy = new Dog();
lucy.paw评估为4露西的构造函数对象定义似乎是从石磊的不同。我很困惑这里发生了什么,有人可以解释JavaScript的对象的记忆模型是如何工作的吗?谢谢。
谢谢,直到此时才真正将原型视为对象。 – Prathap