Javascript 为什么可以';创建新对象时不引用旧对象

Javascript 为什么可以';创建新对象时不引用旧对象,javascript,Javascript,在Chrome开发控制台中,如果我这样做: obj1 = Object({"a":"b"}) 我可以这样做: obj1.a // -> "b" 但我不能这么做: Object({obj1.a:"c"}) // -> throws "Uncaught SyntaxError: Unexpected token ." 为什么?语法错误是因为无法用该符号直接计算对象键。你必须这样做: obj2 = {}; obj2[obj1.a] = 'c'; obj2[obj1.a]; 有关更多

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

obj1 = Object({"a":"b"})
我可以这样做:

obj1.a
// -> "b"
但我不能这么做:

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

为什么?

语法错误是因为无法用该符号直接计算对象键。你必须这样做:

obj2 = {};
obj2[obj1.a] = 'c';
obj2[obj1.a];
有关更多信息:


更深层次的问题是
{}
语法使用对象初始值设定项来构造对象。语法的属性名需要
名称、数字或字符串文字。对另一个对象的求值不符合此要求。

因为这是一种笨拙的语法。最后一行中的Obj1.c不能作为变量计算。它只接受属性名。Obj1.c不是属性的有效名称

您不需要
对象
。JS中的对象只是
{}
。第二种语法无效<代码>变量obj={a:'b'};对象a='c'