你可能也经历过下面代码片段中的这种情况,其中的一个或多个属性名来自于某个表达式,因此无法用对象字面量表达。
var prefix = "user_";
var o = {
baz: function(..){ .. }
};
o[ prefix + "foo" ] = function(..){ .. };
o[ prefix + "bar" ] = function(..){ .. };
ES6新增语法可以解决这个问题:
var prefix = "user_";
var o = {
baz: function(..){ .. },
[ prefix + "foo" ]: function(..){ .. },
[ prefix + "bar" ]: function(..){ .. }
..
};
对象字面定义属性名位置的 [ .. ] 中可以放置任意合法表达式。
计算属性名也可以作为简洁方法或者简洁生成器的名称出现:
var o = {
["f" + "oo"]() { .. } // 计算出的简洁方法
*["b" + "ar"]() { .. } // 计算出的简洁生成器
};