所以關於在原型方法中訪問私有成員的話題已經有很多討論。想到這裏發生,我認爲以下應工作:在每個實例上聲明對象的原型的開銷?
function Test(){
var private = "Private";
this.instance = function(){
return private;
};
Test.prototype.getPrivate = function(){
return private;
};
}
var test1 = new Test();
var test2 = new Test();
console.log(test1.instance === test2.instance); // false
console.log(test1.getPrivate === test2.getPrivate); // true
Turns out它,其實工作。然而,我擔心這樣做可能存在缺陷。
所以我的問題是:有沒有缺點?
你是對的,但也有一些奇怪的行爲: http://jsfiddle.net/8DBTq/1/ – Shmiddty
它正在按照它應該的方式工作,但不是以您期望的方式工作。原型就像一個全局變量。所有實例共享一個副本。如果你修改它,它將被修改爲所有實例。 – chuckj