为了账号安全,请及时绑定邮箱和手机立即绑定

使用Object.defineProperty修改对象的set方法的问题

使用Object.defineProperty修改对象的set方法的问题

守候你守候我 2019-02-13 13:15:59
比如一个对象:obj:{    a : 1,    b : {        b1 : 2,        b2 : 3    }} Object.keys(obj).forEach(function(key){        Object.defineProperty(obj, key, {            set : function(newVal) {                //...doSomething            }        })    })我试了一下,如果是使用obj.b.b1 = 4这样的方式赋值,是不会调用par的set的,怎么才能在这种赋值方式下,调用obj身上的set?
查看完整描述

1 回答

?
慕森卡

TA贡献1806条经验 获得超8个赞

var obj={

    a : 1,

    b : {

        b1 : 2,

        b2 : 3

    }

}


function aaa(obj){

    Object.keys(obj).forEach(function(key){ 

         if(typeof obj[key]=='object'){

             return aaa(obj[key]);

        }

        Object.defineProperty(obj, key, {

            set : function(newVal) {

               console.log(newVal)

            }

        })           

    })

}

aaa(obj)

    obj.b.b2=3;


查看完整回答
反对 回复 2019-02-23
  • 1 回答
  • 0 关注
  • 289 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号