Skip to content

修改-新增属性值处理 ​

本节目标:理解“修改-新增属性值处理”的核心思路,并能把它用于实际开发或面试表达。

对已拦截对象的属性进行赋值时,如果值是对象类型,我们也要进行属性截持;
Object.defineProperty(obj, key, {
  get() { // 后续会有很多逻辑
    return value; // 闭包,次此value 会像上层的value进行查找
  },
  set(newValue) {  // 如果设置的是一个对象那么会再次进行劫持
    if (newValue === value) return
    ==observe====(====newValue====);==
    console.log('修改')
    value = newValue
  }
})

如果只是对一个已截持对象添加新的属性,是无法进行截持的:

无法监控不存在的属性;
新增不存在的属性,不会更新视图;
要使用$set进行设置;

本站总访问 — 次