我无法弄清楚我是如何搞砸的。
我的代码给了我错误:
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..
}}
有什么想法吗?
答案 0 :(得分:7)
问题在于你不能以这种方式使用this.Obj.itemid
。
相反,尝试类似:
var ret={};
ret[this.Obj.itemid]=
{
Color : this.Obj.color,
Name : this.Obj.name,
Year : this.Obj.year
};
return ret;
答案 1 :(得分: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] = ...
将在ret
上创建一个属性,其名称是表达式this.Obj.itemid
的结果。
更简单的例子:
var foo = {};
var b = "bar";
foo[b] = 42;
console.log(foo.bar); // "42"