在Chrome开发者控制台中,如果我这样做:
obj1 = Object({"a":"b"})
我可以这样做:
obj1.a
// -> "b"
但我不能这样做:
Object({obj1.a:"c"})
// -> throws "Uncaught SyntaxError: Unexpected token ."
为什么?
答案 0 :(得分:3)
语法错误是因为无法以该表示法直接评估对象键。你必须做这样的事情:
obj2 = {};
obj2[obj1.a] = 'c';
obj2[obj1.a];
有关详细信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects
更深层次的是{ }
语法使用对象初始值设定项来构造对象。语法的属性名称需要a name, a number, or a string literal
。对另一个对象的评估不符合此要求。
答案 1 :(得分:0)
因为那是尴尬的语法。你最后一行内的obj1.c被评估为一个变量。它只接受属性名称。 Obj1.c不是属性的有效名称