我希望能够在 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 () {};
在这里,我可以避免每次构造对象时都必须创建新函数来设置公共方法,但是这些公共方法不能访问对象的私有成员。
有什么方法可以避免每次构造对象时都必须为公共方法创建新函数的开销,而且还能让它们访问私有成员?