猿问

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

比如一个对象:

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?


守候你守候我
浏览 290回答 1
1回答

慕森卡

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;
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答