currentActiveCategories
現在、オブジェクト リテラルは、配列である と、オブジェクト リテラルの評価時currentValue
に呼び出しの結果に設定される の2 つのプロパティを持つオブジェクトを作成します。その時点で はそのオブジェクトと等しくないため、になります。addValues()
this.currentActiveCategories
undefined
this
アイデアがいつでも現在の合計を返すことができる関数を持つことである場合、これを行うことができます:
var primaryCare = {
currentActiveCategories : [ "1", "2"],
currentValue : function () {
var tempTotal = "";
for(var i = 0; i < this.currentActiveCategories.length; i++){
tempTotal += this.currentActiveCategories[i];
}
return tempTotal;
}
}
primaryCare.currentValue(); // returns "12", i.e., "1" + "2"
変数は常に で宣言しvar
ないとグローバルになります。JS では を宣言できないことに注意してくださいint
。tempTotal
文字列を追加する前に、空の文字列に初期化する必要があり"12"
ます。そうしないと、代わりに"undefined12"
.
関数をオブジェクトのメソッドとして呼び出すとprimaryCare.currentValue()
(上記のように)、関数内でthis
そのオブジェクトが設定されます。
値を文字列として追加するのはちょっと奇妙に思えます。数値を使用して数値の合計を取得したい場合は、次のようにすることができます。
var primaryCare = {
currentActiveCategories : [ 1, 2], // note no quotes around the numbers
currentValue : function () {
var tempTotal = 0;
for(var i = 0; i < this.currentActiveCategories.length; i++){
tempTotal += this.currentActiveCategories[i];
}
return tempTotal;
}
}