我有這樣的代碼:擴展JavaScript的原生對象
pPoint = function(x,y){
this.x = x || 0;
this.y = y || 0;
}
pPoint.prototype = {
constructor:pPoint,
add:function(){
return this.x+this.y;
}
}
如果我做的:
a = new pPoint(10,20)
console.log(a.add());
按預期工作(返回30)。
但是,如果我這樣做:
Array.prototype = {
abcd:function(){
console.log("bla bla testing");
}
}
然後做到這一點:
b = new Array();
b.abcd();
它不工作,爲什麼?
我知道,如果我做這工作得很好...
Array.prototype.abcd:function(){
console.log("bla bla testing");
}
}
我只是不明白爲什麼preivous一個工作在我的pPoint而不是在陣列...
小提琴:http://jsfiddle.net/paulocoelho/wBzhk/
以這種方式設置原型(您的第一個示例'pPoint.prototype = {}')將使pPoint.prototype.constructor指向Object而不是pPoint。構造函數應指向正確的功能,如果你不使用它,並且你不希望其他人擴展你的代碼,這應該不是一個問題,但它是值得一提的。 – HMR