ECMAScript 2015开始,在对象初始器中引入了一种更简短定义方法的语法,这是一种把方法名直接赋给函数的简写方式。
var obj = { property( parameters… ) {}, *generator( parameters… ) {}, async property( parameters… ) {}, async* generator( parameters… ) {}, // with computed keys: [property]( parameters… ) {}, *[generator]( parameters… ) {}, async [property]( parameters… ) {}, // compare getter/setter syntax: get property() {}, set property(value) {} };
var bar = {
foo0: function() { return 0; },
foo1() { return 1; },
['foo' + 2]() { return 2; }
};
console.log(bar.foo0()); // 0
console.log(bar.foo1()); // 1
console.log(bar.foo2());
var
sym=Symbol();
var
sex=
"male"
;
var
user={
privateName:
""
,
get [sym](){
return
this
.privateName+
"..."
;
},
set [sym](str){
this
.privateName=str.replace(/[-](\w)/,
function
(str,$1){
return
$1.toUpperCase();
});
},
[
"sex"
+sex](){
return
"你的性别是"
+(sex==
'male'
?
"男"
:
"女"
);
}
}
user[sym]=
"webkit-transform"
;
console.log(user[sym]);
console.log(user.sexmale());