1

重複の可能性:
Javascriptオブジェクトキーに変数を使用する

私はこれをどのように台無しにしているのか理解できません。

私のコードは私にエラーを与えます:

invalid property id

コード:

 return  { this.Obj.itemid :
               {  Color : this.Obj.color,
                  Name : this.Obj.name,
                  Year : this.Obj.year
                }
           };

これらのハッシュを配列として返す必要があります(したがって、戻り値)が、何をしても、上記のエラーが返されるか、var参照が文字列化されます。そこにある動的なjs値をキーとして実際に取得することはできません。

私はこれを試しました:

" + this.Obj.itemid + "

この:

var itemid = this.Obj.itemid;
return { itemid : {
         //etc..
    }}

何か案は?

4

2 に答える 2

7

問題は、そのように使用できないことですthis.Obj.itemid

代わりに、次のようにしてみてください。

var ret={};
ret[this.Obj.itemid]=
   {
      Color : this.Obj.color,
      Name : this.Obj.name,
      Year : this.Obj.year
   };
return ret;
于 2012-11-01T22:13:29.843 に答える
4

プロパティ初期化子のコロンの左側に表示されるものは、有効な識別子、文字列リテラル、または数値リテラルでなければなりません。常に文字どおりに使用されます。this.Obj.itemidこれらのどれでもありません。

の値this.Obj.itemidプロパティ名として使用しようとしている場合は、次のようになります。

var ret = {};
ret[this.Obj.itemid] = {
    Color : this.Obj.color,
    Name : this.Obj.name,
    Year : this.Obj.year
};

これは、プロパティ名の任意の式で括弧付き表記を使用できるという事実を利用しています。式の結果である名前をret[this.Obj.itemid] = ...持つプロパティを作成します。retthis.Obj.itemid

より簡単な例:

var foo = {};
var b = "bar";
foo[b] = 42;
console.log(foo.bar); // "42"
于 2012-11-01T22:15:21.243 に答える