1. 程式人生 > >組件實現雙向數據綁定的原理

組件實現雙向數據綁定的原理

重新 操作 prope .get function 綁定 混合 define ont

VUE實現雙向數據綁定的原理就是利用了 Object.defineProperty() 這個方法重新定義了對象獲取屬性值(get)和設置屬性值(set)的操作來實現的。它接收三個參數,要操作的對象,要定義或修改的對象屬性名,屬性描述符。重點就是最後的屬性描述符。屬性描述符是一個對象,主要有兩種形式:數據描述符和存取描述符。這兩種對象只能選擇一種使用,不能混合兩種描述符的屬性同時使用。上面說的get和set就是屬於存取描述符對象的屬性。在面試中如何應對?面試官:說一下VUE雙向綁定的原理?答:VUE實現雙向數據綁定的原理就是利用了 Object.defineProperty() 這個方法重新定義了對象獲取屬性值(get)和設置屬性值(set)的操作來實現的。代碼演示:defineProperty的用法var obj = { };var name;//第一個參數:定義屬性的對象。//第二個參數:要定義或修改的屬性的名稱。//第三個參數:將被定義或修改的屬性描述符。Object.defineProperty(obj, "data", {//獲取值get: function () {return name;},//設置值set: function (val) {name = val;console.log(val)}})//賦值調用setobj.data = ‘aaa‘;//取值調用getconsole.log(obj.data);代碼演示:defineProperty的雙向綁定var obj={};Object.defineProperty(obj, ‘val‘,{set:function (newVal) {document.getElementById("a").value =newVal==undefined?‘‘:newVal;document.getElementById("b").innerHTML=newVal==undefined?‘‘:newVal;}});document.getElementById("a").addEventListener("keyup",function (e) {obj.val = e.target.value;})

組件實現雙向數據綁定的原理