2015-02-24 68 views
2

在Chrome开发者控制台时,旧的对象,如果我这样做:为什么不能引用创建一个新的

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

我可以这样做:

obj1.a 
// -> "b" 

但我做不到这样做:

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

为什么?

+0

您不需要'对象'。 JS中的对象只是'{}'。第二种语法无效。 'var obj = {a:'b'}; obj.a ='c'' – elclanrs 2015-02-24 04:01:41

回答

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。另一个物体的评估不符合此要求。

0

因为那是尴尬的语法。在最后一行wony中的Obj1.c被评估为一个变量。它只接受属性名称。 Obj1.c不是属性的有效名称

相关问题