vue实现双向数据绑定是通过Object.defineProperty()方法来实现劫持的
Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。
Object.defineProperty()方法有三个参数:
参数 功能/作用
obj 要修改或定义key值的对象
key 对应obj对象的里面某有已有或要修改的属性
options 这个参数对象里面有get,set两个函数,用来定义属性值
let Obj = {} =>
let demo = document.getElementById(‘demo’) // 获取DOM
let inp = document.getElementById(‘inp’) // 获取DOM
Object.defineProperty(Obj, ‘text’, {
configurable: true,
enumerable: true,
set: function (val) {
inp.value = val
demo.innerHTML = val
console.log(‘input里面输入了’ + val)
},
get: function () {
// 返回对象
return Obj
}
})