JS中set和get方法实现sum的合计

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

描述:

JS中set和get方法实现sum的合计,如我们:

        /*
        *   访问器属性
        *     1、 当给一个属性设置值时,可以写入多条语句,可以解决若干个问题
        *      设置值等同于执行一个函数,同样获取值时也可以执行一个函数
        *      解决多个问题
        *     2、可以设置该属性是否只读或者只写
        *     如果只有setter,那就是只写,不可获取该属性
        *     如果只有getter,那就是只读,不能修改或者设置该属性
        *
        *
        *     场景:
        *     1、前端和服务端通信后获得发来数据结果时,通过setter属性可以直接
        *     设置返回过来的结果来改变显示内容,只能使用这个数据设置一个入口
        *     来完成改变多个显示内容的变化
        *     2、从外容器将数据传递进入子容器时,或者从外向内设置值。或者给组件
        *     设置初始值时
        *
        *
        *
        * */

  • 解读——>

    configurable:false,      //能否使用delete、能否需改属性特性、或能否修改访问器属性、,false为不可重新定义,默认值为true
    enumerable:false,      //对象属性是否可通过for-in循环,flase为不可循环,默认值为true
    writable:false,        //对象属性是否可修改,flase为不可修改,默认值为true
    value:'xxx'        //对象属性的默认值,默认值为undefined
 

代码:

        var obj2={
            sum:0,
            _a:0,
            set a(value){
                if(isNaN(Number(value)))return;
                this._a=value;
                this.sum+=Number(value);
            },
            get a(){
                return this.sum;
            }
        };
        obj2.a=5;
        obj2.a=6;
        obj2.a=7;
        obj2.a=8;
        console.log(obj2.a,obj2.sum);

将属性sum衍变为方法,介于属性和方法之间,从而解决了一个原来要设置方法才能解决的问题。

便与理解,类似于这样:

 var obj3={
            a:0,
            sum:0,
            addA:function (value) {
                this.a=value;
                this.sum+=value;
            }
        };

        obj3.addA(5);
        obj3.addA(6);
        obj3.addA(7);
        obj3.addA(8);
        console.log(obj3.a,obj3.sum);

但同时这样写,暴露了很多缺陷,a、sum变量,addA函数会暴露在外面。

而第一种写法通过setget的写与不写可以实现可读可写或者非可读可写等等的设置,如这篇文章开篇对访问器的解读,便与理解可以看一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值