(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/ –