1. 使用vue写一个数据双向绑定
此时浏览器的输出为:
可以发现在定义的obj对象中除了我们定义的msg之外还有set和get
2.新建一个页面
浏览器输出:
3.以上可以推测
使用Object的方法,对数据添加属性。
var data = {}
var msg = ""
Object.defineProperty(data,'msg',{
set: function reactiveSetter (value){
msg = value
console.log("你设置了个消息:"+value)
},
get: function reactiveGetter(){
return 'msg 你获取了消息:'+ msg
}
})
data.msg = "ok"
console.log(data.msg)
console.log(data)
输出:
4. 以上总结
原理就是Object使用defineProperty设置属性
当数据被赋值时触发set方法绑定数据,
然后调用get方法进行数据获取