JavaScript

超轻量级php框架startmvc

Vue数据双向绑定底层实现原理

更新时间:2020-09-24 06:48:01 作者:startmvc
简介:Vue最独特的特性之一,是其非侵入性的响应式系统。数据模型仅仅是普通的JavaScript

简介:

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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

vue数据双向绑定底层 vue数据双向绑定 vue双向绑定