(function() {
window.gArr = new ExtArray();
})();
function ExtArray() {
this.bounce = function() {
document.write("Bounced successfully!");
};
}
ExtArray.prototype = new Array;
ExtArray.prototype.first = function() {
document.write(this[0]);
}
var eArr = new ExtArray();
//all three work
eArr.bounce();
eArr.push("I am first! ");
eArr.first();
// invoking global
gArr.bounce(); // it works
gArr.push("No, it is me who is really first! "); // doesn't work
gArr.first(); // doesn't work
它爲什麼不起作用?爲什麼實例方法沒有按預期工作?
什麼是觀察到的行爲?預期的行爲是什麼?他們有什麼不同? –
gArr.push應該工作,gArr.first()應該輸出「不,它是我真正的第一個!」 – DrStrangeLove
「請注意,構造函數的原型可以在任何時候改變,如果我們重新分配區域,那麼rect的新實例將在前幾個實例中具有不同的面積方法,更改原型不會影響創建對象的實例。「參考:http://xhalent.wordpress.com/2011/02/16/javascript-object-instantiation-and-prototypes/ –