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());