题解 | #监听对象#
监听对象
http://www.nowcoder.com/practice/2cd8f8421e9b42b98152f56ef5e0ac79
关键点: 1.之前没有单独定义监听函数的时候
//直接绑定,会产生循环引用,发生爆栈。
//没有深刻理解到
Object.keys(person).map(item => {
Object.defineProperty(person, item, {
get: function(){
return person[item];
},
set: function(value){
if(value !== person[item]){
person[item] = value;
}
}
})
})
Object.keys(person).map(item => {
observeObj(person, item, person[item]);
})
function observeObj(obj, key, value) {
Object.defineProperty(obj, key, {
get: function() {
return value;
},
set: function(newValue) {
console.log("value", value)
if (newValue !== value) {
value = newValue;
_render(ul);
}
}
})
}