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