オブジェクトのプライベート メンバーにアクセスできるパブリック メソッドを持つ 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 () {};
ここでは、オブジェクトが構築されるたびにパブリック メソッドを設定する新しい関数を作成する必要はありませんが、それらのパブリック メソッドはオブジェクトのプライベート メンバーにアクセスできません。
オブジェクトが構築されるたびにパブリック メソッドの新しい関数を作成しなければならないというオーバーヘッドを回避する方法はありますが、プライベート メンバーにアクセスできるようにする方法はありますか?