《ES6标准入门》第九章:对象的扩展

属性的简洁表示法

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};
}
f(1, 2) // Object {x: 1, y: 2}
除了属性简写,方法也可以简写。
var o = {
method() { return "Hello!";
}
};
// 等同于 
var o = {
method: function() { 
return "Hello!";
 }
};
下面是一个实际的例子。
var birth = '2000/01/01';
var Person = {
 name: '张三', 
//等同于birth: birth
 birth, 
// 等同于hello: function ()... 
hello() { 
console.log('我的名字是', this.name); }
};
这种写法用于函数的返回值,将会非常方便。
function getPoint() { 
var x = 1; 
var y = 10; 
return {x, y};
}
getPoint() 
// {x:1, y:10}
CommonJS模块输出变量,就非常合适使用简洁写法。
var ms = {}; 
function getItem (key) { 
return key in ms ? ms[key] : null;
} 
function setItem (key, value) {
ms[key] = value;
}
function clear () {
 ms = {};
} 
module.exports = { getItem, setItem, clear };
// 等同于 
module.exports = {
getItem: getItem,
setItem: setItem,
 clear: clear
};
属性的赋值器(setter)和取值器(getter),事实上也是采用这种写法。
var cart = {
  _wheels: 4, get wheels () {
return this._wheels;
 }, set wheels (value) {
if (value < this._wheels) { 
throw new Error('数值太小了!');
} this._wheels = value;
}
}
注意,简洁写法的属性名总是字符串,这会导致一些看上去比较奇怪的结果。
var obj = { class () {}
}; 
// 等同于 
var obj = { 'class': function() {}
};

上面代码中,class是字符串,所以不会因为它属于关键字,而导致语法解析报错。

如果某个方法的值是一个Generator函数,前面需要加上星号。
var obj = {
 * m(){ 
yield 'hello world';
}
};

全部评论

相关推荐

董春花_:真诚无罪,别听评论区那个清华的。按他的逻辑,你有分寸人觉得你是不想来,你积极热情人觉得你太想来,你好骗人就可你养鱼,你不好骗人觉得你服从性不高,合着**做啥都白扯。保持谦逊礼貌与对offer的积极性不才是最正常,也正确的做法么?招聘方的错强加到应聘者身上,***何不食肉糜。
点赞 评论 收藏
分享
06-10 21:15
门头沟学院 Java
宁阿:好多这种没🧠的公司,他们估计都不知道毕业的人不能给安排实习岗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务