JS中ES5和ES6中set和get方法

127 篇文章 2 订阅
111 篇文章 1 订阅

描述:

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

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值