题解 | #监听对象#

监听对象

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);
            }
        }
    })
}
全部评论
错误的代码就不要放在答题里
1 回复
分享
发布于 2023-01-13 23:29 江苏
爆栈好像不是有没有单独定义监听函数的问题,而是有没有在set内部get
点赞 回复
分享
发布于 2023-09-04 10:13 四川
滴滴
校招火热招聘中
官网直投
错误的代码就不要放在答题里
点赞 回复
分享
发布于 03-04 17:22 广东

相关推荐

12 收藏 评论
分享
牛客网
牛客企业服务