setter & getter

accessor

Object.defineProperty(this,"b",{
get: function () {
return this.a;
},
set : function (val) {
this.a = val;
},
configurable : true
});
可以直接在对象中定义这样的属性:
function C() {
return {
a: 1,
get b () {
return 2;
},
set b (val) {
this.a = val;
}
}
}
c = C();

也可以在ES6类中直接定义:
class C {
constructor(props) {
this.a = 1;
}
get b () {
return 2;
};
set b (val) { // 这里不是 function 写法,所以语法限制 val 必填
this.a = val;
}
c = 2;
}
c = new C();

在类中只要定义其中一个,另一个不会在父类上继承

但是不能在函数中直接定义!!!