2017-10-29 18 views
0

質問: 2つの名前付き値を含むオブジェクトを作成しました。 1つは関数であり、もう1つは関数によって生成される値です。私の問題は、私が第2の名前付き値の構文を理解することができないということです。どのように私はそれを参照するのですか?私はどこからでも見ましたが、私が学ぶことができる同様のサンプルオブジェクトを見つけることはできません。本当にありがとう!関数の結果を同じオブジェクトに保存するにはどうすればよいですか?

var answer = { 
    addNumbers: function(a, b, c) { 
     return a + b + c; 
    }, 
    result: answer.addNumbers; //I'm not sure what the syntax is for this line. 
}; 
+1

'result:answer.addNumbers'は結果に関数を格納するだけなので、' result:answer.addNumbers(あなた、ここでは数値) 'を使用します。 – zevee

+0

あなたは何番の数字を追加しますか?または、関数が実行されたときに常に結果を格納しますか? – Psi

答えて

1

私は本当にあなたが何をしたいのか得ることはありませんが、あなたは毎回関数が実行されます、結果を保存したい場合は、あなたがこのような何かをしたい場合があります:

var answer = { 
    addNumbers: function(a, b, c) { 
     this.result = a + b + c; 
     return this.result; 
    }, 

    result:0 
}; 

私はJSONを少し説明しますと思う:

一般的な、あなただけのリストで多くの特性ここでは、addNumbersresultを指定し、それらに値を割り当てます。

addNumbersの値はFunction -object(従って呼び出し可能)であり、resultの値はNumber -object(この場合0)です。

addNumbersanswer.addNumbers(1,2,3)のように呼び出すことができます。この場合、this.resultの新しい割り当てを含め、関数本体の{}の間のすべてが実行されます。

このトピックには、特にthisがいくつかの理由で解決されていますが、この回答の範囲を超えるものがたくさんあります。

+0

ありがとうございました! resultに0の値を代入したのはなぜですか?それがうまくいけば、なぜ私は確信していません。 – DR01D

+1

私は初期値として0を割り当てました。関数が実行されるたびに上書きされますが、最初は値が必要です。 – Psi

+1

@ DR01Dでは、結果のプロパティの値を指定することさえできませんでした。アクセスしようとすると 'undefined'が返されます。 'addNumbers'から設定してもうまく動作します。それにもかかわらず、最初は 'null 'に設定することができます。 –

1

以下はあなたの意見を参考にしてください。

また
var addNumbers = function(a, b, c) { 
    return a + b + c; 
} 
var answer = { 
    addNumbers: addNumbers, 
    result: addNumbers(...) 
}; 

var answer = { 
    addNumbers: function(a, b, c) { 
     return a + b + c; 
    } 
}; 
answer.result = answer.addNumbers(...); 
1

関数の最後の結果はまた、関数オブジェクトに格納することができる。

function addNumbers(a, b, c) { 
 
    addNumbers.result = a + b + c 
 
    return addNumbers.result 
 
} 
 

 
addNumbers(1,2,3) 
 

 
console.log(addNumbers.result)

それ以外の場合は、別の機能を受け入れ、オブジェクトを返す関数を実行することによって可能です。

var result = (function(f, a, b, c) { 
 
    return { 
 
    addNumbers: f, 
 
    result: f(a, b, c) 
 
    } 
 
})(function(a, b, c) { return a + b + c }, 1, 2, 3) 
 

 
console.log(result)

関連する問題