理解object.defineProperty和proxy的区别

56 阅读1分钟

无关实现原理

假设班级 class 里有张三、李四等学生,你现在是一个管理员,需要实时了解学生动向

class = {
  "zhangsan":'',
  "lisi":'',
}

defineProperty

vue2的做法是,开学时,与每个学生单独加好友建立联系

object.defineProperty(class,'zhangsan',{})
object.defineProperty(class,'lisi',{})

很明显,如果现在class里来了新人王五,在与其加好友之前,是无法知道这个人的存在的
如果张三离开班级,单方面删除了好友,在下一次聊天之前,暂时也是无法感知的

proxy

再来看看vue3的做法,它是直接建立一个班级群

new Proxy(class,{})

这样无论群里来新人或者有人退群,都可以被感知