我希望能夠在Javascript中創建一個具有可訪問該對象私人會員的公共方法的對象。但是,我聽說每次創建對象時都會聲明公共方法,所以我寧願避免這種開銷。因此,例如,該代碼會做我想做的:以Javascript訪問私人會員的公共方法
function createMyObject(parameter) {
var that = {};
var privateVariable,
privateMethod = function() { return 1; };
that.publicVariable = 0;
that.publicMethod = function() {
privateVariable = privateMethod();
}
return that;
}
但每次有人打電話createMyObject,它必須創建函數來設置的公共方法。相反,如果我這樣做:
function MyClass(parameter) {
var privateVariable,
privateMethod = function() { return 1; };
this.publicVariable = 0;
}
MyClass.prototype.publicMethod = function() {};
在這裏,我能避免產生新的功能設置公共方法每次一個對象被構造,但這些公共方法不能訪問對象的私有成員。
是否有某種方法可以避免每次創建對象時必須爲公共方法創建新函數的開銷,還能夠讓他們訪問私有成員?
您可以使用自我調用功能來隱藏您的'私人'功能,但不能創建不在實例之間共享的私有變量。 –