JS中ES5和ES6中set和get方法

ES5
情况一:对象已经创建,需要给上面添加setget方法
/*
* 如果使用defineProperty定义setget,默认configurable: false,enumerable: false
* */
var obj={_a:0};
Object.defineProperty(obj,”a”,{
configurable:false,
enumerable:false,
set:function (value) {
this._a=value;
},
get:function () {
return this._a;
}
});
情况二:当创建对象时,使用这种写法
/*
* 当使用对象设置setget时,configurable: true,enumerable: true
* */
var obj1={
_a:0,
set a(value){
this._a=value;
},
get a(){
return this._a;
}
};
console.log(Object.getOwnPropertyDescriptor(obj1,”a”));
ES6
class Box{
constructor(){
this._data=null;
}
set data(value){
this._data=value;
}
get data(){
return this._data;
}
}
getset方法的使用:
get、set方法的使用在JavaScript中并不是像java、C、C++中的XXX.get(),XXX.set(),一样使用,而是通过以下:
/*
* 这就相当于执行了set a(value)这个访问器
* 等号后面值就是访问器中参数value
* */
obj1.a=4;

/*
* 获取obj1.a的值,执行get a()这个访问器
* 如果在等号右边,或者打印的函数中等。
* 因为get a()访问器里有return,就会返回一个值
* */
var sum=obj1.a+5;
console.log(obj1.a);

发表评论

电子邮件地址不会被公开。 必填项已用*标注