私はRevealingPrototypePatternを使用しており、同じJavaScriptファイルに2つの異なるプロトタイプを入れています。これらのリンクは、これに関連する私が見つけた記事へのリンクです。 http://bit.ly/U83hdg、http://bit.ly/VmJ71h。_ _
これらはアトミッククラスのように動作し、一方に関連付けられた関数が他方の関数を認識しないという印象を受けました。
たとえば、これらのプロトタイプは両方とも「init」関数と「set」関数を持っています。私がブラウザで見ている動作は、コードが最初のプロトタイプ名を参照している場合でも、「init」の最後のバージョンが実行されることです。
これは、私の2つのプロトタイプからの一般的な簡略化されたコードです。
var operationA = function (control, settings) {
this.control = control;
this.settings = settings;
};
operationA.prototype = function () {
init = function () {
// do something
return this;
}
set = function () {
// do something
return this;
};
return {
init: init,
set: set
};
}
var operationB = function (control, settings) {
this.control = control;
this.settings = settings;
};
operationB.prototype = function () {
init = function () {
// do something
return this;
}
set = function () {
// do something
return this;
};
return {
init: init,
set: set
};
}
これが、最初のオブジェクトをインスタンス化する方法です。
var objectASettings = {
property1: 48,
property2: 37
};
var objectA = new operationA('#mySelector', objectASettings);
objectA.init().set();
上記を実行すると、operationAのプロトタイプからinitおよびset関数を実行する代わりに、operationBのプロトタイプからのinitおよびset関数が実行されます。
これらのプロトタイプは、基本的に、含まれている関数に名前空間を付けていると思いました。operationAとoperationBの一意のパブリック関数名(initA、setA、initB、setBなど)を作成する必要がありますか?
これらのパブリック関数を自己完結および/または名前空間化する方法はありますか?それで、initの同じ操作名を公開し、同じファイル内の2つの異なるプロトタイプに設定できますか?
ご協力いただきありがとうございます。