繁体   English   中英

Javascript对象/关联数组的这两个符号之间有什么区别?

[英]What is the difference between these two notations for Javascript objects/associative array?

这有什么区别

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

和这个?

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

或者他们的意思是一样的吗? 如果他们这样做,如果我希望密钥成为对象怎么办? 如果name表示"name"我如何指定对象作为键?

没有区别。 仅当您要将字符串用作属性名称,但该字符串不是有效标识符时,才需要引号。 进一步,

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

(资源)

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

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

{ -test: 42 }

这样做:

{ "-test": 42 }

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

他们的意思是一样的。 有效键是标识符,字符串文字或数字文字。 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM