書中講動態原型繼承實現繼承,給了一段錯誤代碼function Polygon(sides){ this.sides = sides; if(typeof Polygon._initialized == "undefined"){ Polygon.prototype.getName = function(){ return "dash";
} alert(Polygon._initialized); Polygon._initialized = true;
}
}function Triangle(base, height){ Polygon.call(this,3); this.base = base; this.height = height; if(typeof Triangle._initialized == "undefined"){
**;** Triangle.prototype.getArea = function(){ return 0.5 * this.base * this.height;
}
Triangle._initialized = true;
}
}window.onload = function(){ var ri = new Triangle(10,20); var tri = new Triangle(20,40); alert(ri.getArea()); alert(ri.getName()); alert(ri.sides);
alert(tri.getArea());
alert(tri.getName()); alert(tri.sides);
}粗體部分的代碼有錯,書中原文解釋:從邏輯上講,這個位置是正確的,但從功能上講,卻是無效的.從技術上 說,在代碼運行前,對象已經被實例化,并與原始的prototype對象聯系在一起了.雖然用極晚綁定可使對原型對象的修改正確地反映出來,但替換 prototype對象不會對該對象產生任何影響.只有未來的對象(第二個以后的對象)實例才會反映出這種改變,這就使第一個實例變得不正確。
為什么技術上,對象被實例化?這段沒看懂
慕絲7291255
2023-04-24 18:14:26