对象和数组初始化表达式
对象和数组的初始化表达式实际上是一个新创建的对象和数组,称为“对象直接量”和“数组直接量”。
数组表达式:
[] // 一个空数组
[1+2, 3+4] // 两个元素的数组
var matrix = [[1,2,3], [4,5,6], [7,8,9]];
数组直接量的列表逗号之间的元素可以省略,这时省略的空位会填充值 undefined。例如:
var sparseArray = [1, , , , 5];
数组直接量的元素列表结尾处可以留下单个逗号,这时并不会创建一个新的值为 undefined元素。
对象初始化表达式:
与数组表达式类似,只是方括号被花括号代替,并且每个子表达式都包含一个属性名和一个冒号作为前缀:
例如:
var p = {x:2, y:-1.2};
var q = {};
q.x = 2.3;
q.y = -1.2;
对象直接量也可以嵌套:
var rectangle = { upperLeft: {x:2, y:2},
lowerRight: {x:4, y:5}};
对象直接量的属性名称可以是字符串而不是标识符:
var square = {"upperLeft":{x:1, y;2},
“lowerRight”:{x:1, y:2}};
函数定义表达式
函数定义表达式可称为“函数直接量”。
一个典型的函数定义表达式包含关键字function,跟随其后的是一对圆括号,括号内是一个以逗号分隔的列表,列表含有0个或多个标识符/参数名,然后再跟随一个由花括号包裹的JS代码段/函数体,例如:
var square = function(x) { return x*x;}
属性访问表达式
JS为属性访问表达式定义了两种语法:
expression.identifier
expression[expression]
第二个表达式指定要访问的属性的名称或者代表要访问数组元素的索引,例如:
var o = {x:1, y:{z:3}}; // 一个对象
var a = [o, 4, [5,6]]; // 一个数组
o.x // => 1
o.y.z // => 3
o["x"] // =>1
a[1] // =>4
a[2]["1"] // =>6
a[0].x // =>1
(函数)调用表达式
调用表达式是一种调用函数或方法的语法表示。
例如:
f(0)
Math.max(x,y,z)
a.sort()
对象创建表达式
对象创建表达式创建一个对象并调用一个函数初始化新对象的属性。对象创建表达式和函数调用表达式非常类似,只是对象创建表达式之前多了一个关键字 new,例如:
new Object()
new Point(2,3)
如果一个对象创建表达式不需要传入任何参数给构造函数的话,那么这对圆括号是可以省略的:
new Object
new Date