相关题目:
object.key 和 object.defineProperty()
**object.defineProperty()**方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。如果不指定configurable, writable, enumerable ,则这些属性默认值为false,如果不指定value, get, set,则这些属性默认值为undefined
语法: Object.defineProperty(obj, prop, descriptor)
obj: 需要被操作的目标对象
prop: 目标对象需要定义或修改的属性的名称
descriptor: 将被定义或修改的属性的描述符
Object.keys() 返回一个所有元素为字符串的数组,其元素来自于从给定的object上面可直接枚举的属性。这些属性的顺序与手动遍历该对象属性时的一致。
发布——订阅者模式
https://www.jianshu.com/p/c1be274d94cb
vue双向数组绑定实现原理
vue双向数据绑定,本质上就是使用object.defineProperty()方法对页面数据进行劫持,再使用发布呵呵订阅者模式,当数据进行改变时,使用object.defineProperty()芳的get方法获取改变,使用订阅器对象,遍历发布给所有的watcher,使watcher更新页面数据。
参考链接:
https://www.cnblogs.com/libin-1/p/6893712.html