在 JavaScript 对象中,字面量由键值对组成。JavaScript 中的键始终是字符串,而值可以是任何数据类型。
JavaScript 为定义键提供了语法糖。例如,与字符串文字不同,您不需要引用键。因此,以下两个示例是等价的:
{ x: 0 } // example 1
{ "x": 0 } // example 2
然而,这种语法糖只适用于它们之间没有任何空格(即空格、制表符、换行符等)的标识符。例如,以下内容在 JavaScript 中是无效的:
{ a property: 0 } // whitespace not allowed in identifiers
但是,您可以通过引用标识符来解决此限制:
{ "a property": 0 } // valid
您还可以使用布尔值 ( true
or false
)、数字文字和undefined
andnull
作为键。但是请记住,它们被强制转换为字符串。因此你可以这样做:
var o = {
undefined: 1,
null: 2,
true: 3,
false: 4,
0: 5
};
然后您可以通过以下方式访问它们:
alert(o.undefined); // 1
alert(o.null); // 2
alert(o.true); // 3
alert(o.false); // 4
alert(o[0]); // 5
最后一句话很重要。数字文字本身不归类为有效标识符。因此,您需要使用数组括号表示法 ( []
) 而不是点表示法 ( .
) 来访问它。
由于 JavaScript 中的所有键都是字符串,你甚至可以这样做:
alert(o["undefined"]); // 1
alert(o["null"]); // 2
alert(o["true"]); // 3
alert(o["false"]); // 4
alert(o["0"]); // 5
但是,您不能将对象、数组或函数用作键。例如以下是无效的:
{ {1: 2}: 3 } // objects can't be used as keys
{ [1]: 2 } // arrays can't be used as keys
{ function () {}: true } // functions can't be used as keys
这就是你需要知道的关于对象字面量的全部内容。