在学习了Vue的基本使用之后,对于vue框架中的双向数据绑定的实现原理还没了解过,今天看到Object.defineProperty方法后,了解到这个方法涉及到双向数据绑定原理。于是深入了解了一下,特来记录一下。
Object.defineProperty(obj, propertyName, descriptor)
obj
,propertyName
obj是应用描述符的对象,property是obj对象属性
descriptor
descriptor可以是属性描述符对象,也可以是访问器描述符对象,这里只说访问器描述符,我们先看一下对象的访问器属性,它们本质上是用于获取和设置值的函数。访问器属性由‘getter’ 和 ‘setter’方法表示,在对象字面量中,用 get 和 set 表示。
let obj = {// 当读取obj的name属性时,该方法起作用get name(){} // obj.name = value 当设置obj的name属性值时,该方法起作用set name(value) { }
}
当我们调用 obj.name 时,实际是getter在运行
访问器描述符
在访问器描述符对象中,也有get和set方法,通过这两个方法设置对象的属性
let person = {lastName: 'john',firstName: 'smith'
}
Object.defineProperty(