为什么在创建新对象时无法引用旧对象

时间:2015-02-24 03:59:18

标签: javascript

在Chrome开发者控制台中,如果我这样做:

obj1 = Object({"a":"b"})

我可以这样做:

obj1.a
// -> "b"

但我不能这样做:

Object({obj1.a:"c"})
// -> throws "Uncaught SyntaxError: Unexpected token ."

为什么?

2 个答案:

答案 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不是属性的有效名称