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