コンストラクターで使用されているが、パブリック API の一部ではない関数がいくつかあると推測します。
この場合、1 つのオプションは、それらをコンストラクターのプロパティとして単純に格納することです。次に、コンストラクターでそれらを呼び出すときに、.call()
メソッドを使用して、構築中の現在のオブジェクトのコンテキストを設定します。
このようにして、自動的に を介してパブリック メンバーにアクセスしthis
、引数として渡すとプライベート変数にアクセスできます。
var myClass = function() {
this.someprop = 'prop value';
var privVar = 'private value';
myClass.func.call(this, privVar);
};
myClass.func = function(priv){
alert(this.someprop);
alert(priv);
};
var inst = new myClass;
したがって、これはMyClass
、コンストラクターによって使用される関数の名前空間ストレージとして関数を使用するだけです。コンストラクターは、渡されたと でthis
何かを行うのコンテキストからそれを呼び出します。this.someProperty
privVar
これがあなたの求めているものかどうかはわかりませんが、それは1つのオプションです。
以下のコメントで@Raynosが正しく指摘しているように、単純な名前空間ストレージとしてコンストラクターに追加されたプロパティMyClass
はまったくプライベートではなく、コンストラクターにアクセスできる任意のコードからアクセスできます。
instanceof
のインスタンスから呼び出されることを確認するチェックを追加するなど、適切に呼び出されるようにするためにいくつかのチェックを行うことができますがMyClass
、そのようなチェックはまったく安全ではなく、実際のプライベートメンバーの保護を提供しません。