属性的简洁表示法:
ES6允许直接写入变量和函数,作为对象的属性和方法,这样写更简洁:
var foo = 'bar';
var baz = {foo};
baz //{foo:'bar'}
//等同于
var baz = {foo: foo}
上面的代码表明,ES6允许在对象之中,只写属性名,不写属性值.这时,属性值等同属性名所代表的变量.
function f(x, y) {
return {x, y}
}
//等同于
function f(x, y){
return (x:x, y:y}
}
除了属性简写,方法也可以简写.
var 0 = {
method (){
return "xxx";
}
};
//等同于
var o = {
method: function() {
return 'xxx";
}
};
这种写法用于函数的返回值, 将会非常方便:
function getPoint() {
var x = 1;
var y = 10;
return {x, y}:
}
getPoint()
// {x:1, y:10}
属性名表达式
JavaScript 语言定义对象的属性,有两种方法:
//方法一
obj.foo = true;
//方法二
obj['a' + 'bc'] = 123;
上面代码的方法是直接用标识符作为属性名,方法二是用表达式作为属性名,这时要将表达式放在方括号之内.
ES6 允许字面量定义对象时,用方法二(表达式)作为对象的属性名,即把表达式放在方括号内.
let propKey = 'foo';
let obj = {
[propKey] : trune;
['a' + 'bc'] : 123
};
表达式还可以用于定义方法名:
let obj = {
['h' + 'ello']() {
return 'xxx';
}
};
obj.hello() ///xxx
注意: 属性名表达式 和 简洁表示法,不能同时使用.否则报错.
var foo = 'bar';
var bar = 'abc';
var baz = { [foo] };//报错