1. 程式人生 > 其它 >Vue資料雙向繫結原理(vue2向vue3的過渡)

Vue資料雙向繫結原理(vue2向vue3的過渡)

眾所周知,Vue的兩大重要概念:

資料驅動
元件系統
  • 1
  • 2

接下來我們淺析資料雙向繫結的原理
一、vue2
1、認識defineProperty

vue2中的雙向繫結是基於defineProperty的get操作與set操作,那麼我們簡單認識下defineProperty,
作用: 就是直接在一個物件上定義一個新屬性,或者修改一個已經存在的屬性。
那麼我們先來看下Object.getOwnPropertyDescriptor(),有定義方法就會有獲取方法,對這就是與defineProperty相對的方法,它可以獲取屬性值。

var a ={
b:1,
c:2
}
console.log(Object.getOwnPropertyDescriptor(a,‘b’)); //檢視獲取b屬性

這就是打印出來的結果,configurable的意思是可便利,enumerable的意思是可列舉,writable的意思是可寫。
2、使用defineProperty實現簡單的私有變數

知道了屬性內部的屬性值,我們可以使用defineProperty來實現一個私有變數。

var a ={
b:1,
c:2
}
Object.defineProperty(a,‘b’,{
writable:false //不可寫
})
console.log(Object.getOwnPropertyDescriptor(a,‘b’)); //檢視獲取b屬性

發現,改變不了a.b的值。

另外,還可以使用一個很快捷的方法實現私有變數

var a ={
b:1,
c:2
}
Object.freeze(a,‘b’); //凍結,可理解為變為私有屬性
// Object.seal(a,‘b’); //configurable置為false
console.log(Object.getOwnPropertyDescriptor(a,‘b’)); //檢視獲取b屬性

更多內容請見原文,原文轉載自:https://blog.csdn.net/weixin_44519496/article/details/119328259