Appearance
修改-新增属性值处理
本节目标:理解“修改-新增属性值处理”的核心思路,并能把它用于实际开发或面试表达。
对已拦截对象的属性进行赋值时,如果值是对象类型,我们也要进行属性截持;
Object.defineProperty(obj, key, {
get() { // 后续会有很多逻辑
return value; // 闭包,次此value 会像上层的value进行查找
},
set(newValue) { // 如果设置的是一个对象那么会再次进行劫持
if (newValue === value) return
==observe====(====newValue====);==
console.log('修改')
value = newValue
}
})如果只是对一个已截持对象添加新的属性,是无法进行截持的:
无法监控不存在的属性;新增不存在的属性,不会更新视图;要使用$set进行设置;