javascriptの別のメソッドにメソッドを割り当てる

私はそれぞれがセットアップメソッドを持っているいくつかのjavascriptオブジェクトを持っています。コードはすべて同じですので、setupMainという関数を作成しました。次に、オブジェクトのインスタンスごとに、セットアップ値をsetupMainに設定しようとしています。以下のようなものです...しかし、インスタンスが作成された後に設定値を見ると、setupMain関数を指す代わりにundefinedに戻ります。どんな考え?ありがとう。

var customObject = function(){
  this.title = "";
}
var setupMain = function(obj){
  obj.title = "initial setup value";
}

var co = new customObject();
co.setup = setupMain(co);
0
戻り値がない setupMain 関数を呼び出すため、 co.setup は未定義です。
追加された 著者 Mike Christensen,
私の答えを以下に加えました、それがはっきりしないかどうか分かります。
追加された 著者 Mike Christensen,
さて、関数とその内容をco.setupに代入するには、何を返すのですか?ありがとう。
追加された 著者 geoff swartz,

2 答え

次のようなものを探しているかもしれません:

var customObject = function(){
  this.title = "";
}
var setupMain = function(){ //"This" will point to instance, such as co
  this.title = "initial setup value";
}

var co = new customObject();
co.setup = setupMain; //Reference to function

co.setup(); //Call the setup function
window.alert(co.title);

また、インスタンスを作成するたびに setup 関数を設定したくない場合は、プロトタイプに移動することができます:

customObject.prototype.setup = setupMain; //Now, every customObject has a setup function
var co = new customObject();
co.setup();
window.alert(co.title);

最後に、毎回 setup(); を呼び出す必要がない場合は、コンストラクタ内で setup を呼び出すことができます。

var customObject = function(){
  this.setup(); //Call shared setupMain function because it's part of the prototype
}
var setupMain = function(){
  this.title = "initial setup value";
}

customObject.prototype.setup = setupMain; //This can be shared across many prototypes

var co = new customObject();
window.alert(co.title);
1
追加された
いいえ問題は、それを保つ!
追加された 著者 Mike Christensen,
ありがとうございました。それは大きな助けとなりました。
追加された 著者 geoff swartz,

あなたのコードはsetupMain(co)を評価し、その結果をc.setup ...に割り当てます。したがって:

  • setupMainはco.titleを「初期設定値」に設定します
  • setupMainは未定義を返します。
  • co.setupが未定義に設定されている

変数には、次のような関数を割り当てる必要があります。

var setupMain = function() {
    this.title = "initial setup value";
}
...
co.setup = setupMain;//Without the ()
0
追加された
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript