1

私はjavascriptオブジェクトを持っていますが、これにいくつかのプロトタイプ関数を追加しましたが、これらは主にオブジェクトのメンバーに何らかの形で依存しています。

myForm() {
    this.property1 = "Prop1";
    this.property2 = "Prop2";
}

myForm.prototype.loadValues = function(){ /*...*/);

myForm.prototype.setValues = function(){ /*...*/);

myForm.prototype.doStuff = function(){ /*...*/);

現在約4000行に収まっている十分な関数/コードがあり、開発ツール/firebugを使用してデバッグする必要があるたびに私を悩ませています。私はこれをそのように分割することを考えていました。

myForm.js-

myForm(){
    this.property1 = "Prop1";
    this.property2 = "Prop2";
    new myFormLoadActions();
    new myFormSetActions();
    new myFormDoStuffActions();
}

myFormLoadActions.js

myFormLoadActions(){
    myForm.prototype.loadValues = function(){ /*...*/);
}

myFormSetActions.js

myFormSetActions(){
    myForm.prototype.setValues = function(){ /*...*/);
}

myFormDoStuffActions.js

myFormDoStuffActions(){
    myForm.prototype.doStuff = function(){ /*...*/);
}

私はこれを試しましたが、機能的に機能しているようです。これは、多数のプロトタイプ関数を処理するための推奨される方法ですか、それともより良い方法がありますか?

4

3 に答える 3

1

古いコードを保持しますが、プロトタイプへの割り当てを複数のファイルに分散させるだけです。

ファイル0

myForm() {
    this.property1 = "Prop1";
    this.property2 = "Prop2";
}

ファイル1

myForm.prototype.loadValues = function(){ /*...*/);

ファイル2

myForm.prototype.setValues = function(){ /*...*/);

コメントで述べたように、これは1つのクラスがやりすぎの問題ですが、それを認識し、より小さなファイルが必要なため、ここに進みます:)

于 2012-06-14T15:16:31.230 に答える
0

私はこのアプローチをお勧めします。それは私にはもっときちんとしていて、デバッグも難しくないようです。

myForm() {
    this.property1 = "Prop1";
    this.property2 = "Prop2";
}

myForm.prototype = {
    loadValues: function(){ /*...*/),
    setValues: function(){ /*...*/),
    doStuff: function(){ /*...*/),
    .
    .
    .
}

別のアプローチ:

myForm(){
    this.property1 = "Prop1";
    this.property2 = "Prop2";
    addFunctionsToPrototype();
}
addFunctionsToPrototype(){
    myForm.prototype.loadValues = function(){ /*...*/);
    myForm.prototype.setValues = function(){ /*...*/);
    myForm.prototype.doStuff = function(){ /*...*/);
}
于 2012-06-14T14:44:14.230 に答える
0

私には、それは少し奇妙に見えます。つまり、「副作用」(別のオブジェクトのプロトタイプにプロパティを追加する)のためにオブジェクトを構築し、すぐにそれらを破棄しているということです。

myForm(){
    ...
    new myFormLoadActions();
    ...
}

「更新」したオブジェクトは、インスタンス化後に実際には何も実行せず、そのインスタンスへの参照を保持していないため、呼び出し可能な関数である方がよいでしょう。

myForm(){
    ...
    myFormLoadActions(this);
    ...
}

それは私の謙虚な意見ですが、気軽に議論してください!

于 2012-06-14T14:39:34.897 に答える