Vue數據雙向綁定底層實現原理
簡介:
Vue 最獨特的特性之一,是其非侵入性的響應式系統(tǒng)。數據模型僅僅是普通的 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('觸發(fā)setter');//設置、修改時觸發(fā)set
middle=val;
watcher();
},
get(){
console.log('觸發(fā)geter');//獲取、使用時觸發(fā)get
return middle;
}
})
function changeTest(){
test.name="變變變";//觸發(fā)setter
}
function watcher(){
document.getElementById('test').innerHTML=test.name;//觸發(fā)get
}
</script>
</body>
</html>
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
vue3項目配置按需自動引入自定義組件unplugin-vue-components方式
這篇文章主要介紹了vue3項目配置按需自動引入自定義組件unplugin-vue-components方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03
使用vite創(chuàng)建vue3之vite.config.js的配置方式
這篇文章主要介紹了使用vite創(chuàng)建vue3之vite.config.js的配置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08

