JS的getter和setter

admin0条评论 39 次浏览

let o = {
           name:’liubofang’,
    get  onlyRead(){ //在对象中定义一个 onlyRead的 get方法
           return   ‘只读属性’;
    },
   set  onlyWrite(value){ //在对象中定义一个 onlyWrite的 set方法
       return  value;
   },
}
o.onlyRead = ‘设置只读属性’; //由于没有定义 set 方法 这里的修改不起作用
alert(o.onlyRead) // 内部调用了gettert 方法 既是 get onlyRead()
o.onlyWrite = ‘设置只写属性’; //内部调用了 setter方法 既是 set onlyWrite()
alert(o.onlyWrite) // 由于没有定义 get 方法 onlyWrite的值 永远是undefined
//getter 和 setter 实际用途
let  s = {
_test:”,
get  test(){
/*这里可以进行一些逻辑/格式化操作*/
return  this._test + ‘/helloWorld’;
},
set  test(value){
/*这里可以进行一些逻辑/格式化操作*/
this._test = ‘http://’ + value;
}
}
/*
通过定义了s对象的代码可以看出 我们通过定义一个 _test属性来作为媒介 采用get 和 set方法 来对_test属性进行 读取和设置。
一搬情况下 我们不会对 _test 属性进行直接操作(this._test = xxx)。 而是通过getter和setter方法来对数据进行操作。
比如:我们希望在 setter或者getter的时候 格式化数据:
this.test = ‘www.baidu.com’;
alert(this.test); // 实际输出时 则是 http://www.baidu.com
*/
s.test = ‘www.baidu.com’; //内部调用了setter方法 前面自动加上了 http://
alert(s.test); // http://www.baidu.com/helloWorld //内部调用了getter方法 后面自动加上了 /helloWorld
alert(s._test); // http://www.baidu.com _test属性真实的值

          点击下载该实例代码 : getter和setter代码文件


发表评论

? razz sad evil ! smile oops grin eek shock ??? cool lol mad twisted roll wink idea arrow neutral cry mrgreen