Vue.js中重要的数据监听及响应的核心就是Object.defineProperty方法
var vm = new Vue({
el:"#app",
data:{
name:"zhangsan"
}
})在Vue.js中,通常是直接通过vm.name来操作数据,而不是vm.data.name,因为该方法将data对象代理到了vm上,实现了对数据的劫持,达到能够监听数据变动的目的。
<div id="app">
<ul>
<li id="name"></li>
</ul>
</div>
<script>
var vm = {}
var data = {
age:100,
name:"zhangsan"
}
let key
for(key in data) {
(function(){
// 将data对象的属性key代理到vm对象上,并且监听该属性值的变化
Object.defineProperty(vm,key,{
get() {
return document.querySelector("#name").innerHTML
},
set(newVal){
document.querySelector("#name").innerHTML = newVal
}
})
})(key)
}
vm.name = "lisi"
</script>
版权声明:本文为weixin_37745913原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。