富贵资源网 Design By www.hznty.com
简介:
Vue 最独特的特性之一,是其非侵入性的响应式系统。数据模型仅仅是普通的 JavaScript 对象。而当你修改它们时,视图会进行更新。简单的说,就是数据变视图变。
当你把一个普通的 JavaScript 对象传给 Vue 实例的 data 选项,Vue 将遍历此对象所有的属性,并使用 Object.defineProperty 把这些属性全部转为 getter/setter。Object.defineProperty 是 ES5 中一个无法 shim 的特性,这也就是为什么 Vue 不支持 IE8 以及更低版本浏览器。
下例为模拟,Vue数据双向绑定底层实现原理
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>数据双向绑定底层实现</title> </head> <body> <button onclick="changeTest()">点我改变</button> <div id="test">哈哈哈</div> <script> let test={}; let middle=''; Object.defineProperty(test,'name',{ set(val){ console.log('触发setter');//设置、修改时触发set middle=val; watcher(); }, get(){ console.log('触发geter');//获取、使用时触发get return middle; } }) function changeTest(){ test.name="变变变";//触发setter } function watcher(){ document.getElementById('test').innerHTML=test.name;//触发get } </script> </body> </html>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
富贵资源网 Design By www.hznty.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
富贵资源网 Design By www.hznty.com
暂无评论...