1

这有什么区别

var person = {
    name: "Bob",
    age: "99"
};

还有这个?

var person = {
    "name": "Bob",
    "age": "99"
};

还是他们的意思是一样的?如果他们这样做了,如果我想让钥匙成为一个对象怎么办?name如果手段,我将如何指定对象作为键"name"

4

3 回答 3

4

没有区别。仅当您想使用字符串作为属性名称时才需要引号,但该字符串不是有效的标识符。更远,

对象属性名称可以是任何有效的 JavaScript 字符串,也可以是可以转换为字符串的任何内容,包括空字符串。但是,任何不是有效 JavaScript 标识符的属性名称(例如,具有空格或破折号或以数字开头的属性名称)只能使用方括号表示法访问。

(来源)

MDN 上深入介绍了对象文字语法。

于 2013-07-04T19:48:22.573 回答
0

在这种情况下它们是等价的,但引用的版本允许您使用不是有效 JS 标识符的键。例如,这不起作用:

{ -test: 42 }

虽然这样做:

{ "-test": 42 }

无论如何,您都不能将对象指定为键。

于 2013-07-04T19:48:16.017 回答
0

他们的意思是一样的。有效键是标识符、字符串文字或数字文字。见http://ecma-international.org/ecma-262/5.1/#sec-11.1.5

您还不能使用对象本身作为键,但是为 EcmaScript 6 提出的 WeakMap 对象将解决这个问题。请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap

于 2013-07-04T20:36:06.073 回答