对象初始化表达式

对象和数组初始化表达式实际上是一个新创建的对象和数组。这些初始化表达式有时称作 对象直接量数组直接量。然而和布尔值直接量不同,它们实际上不是原始表达式,因为它们所包含的成员或者元素都是子表达式。

对象初始化表达式和数组初始化表达式非常相似,只是方括号被花括号代替,并且每个子表达式都包含一个属性名和一个冒号作为前缀。

// 一个拥有两个属性成员的对象
var p = {
x: 2.3,
y: -1.2,
};
// 一个空对象
var q = {};
// q 的属性成员和 p 的一样
q.x = 2.3;
q.y = -1.2;

对象直接量也可以嵌套。

var rectangle = {
upperLeft: { x: 2, y: 2 },
lowRight: { x: 4, y: 5 },
};

JavaScript 求对象初始化表达式的值的时候,对象表达式也都会各自计算一次,并且它们不必包含常数值:它们可以是任意 JavaScript 表达式。

同样,对喜爱那个直接量中的属性名称可以是字符串而不是标识符(这在那些只能使用保留字或一些非法标识符作为属性名的地方非常有用)

var side = 1;
var square = {
upperLeft: {
x: p.x,
y: p.y,
},
lowerRight: {
x: p.x + side,
y: p.y + side,
},
};