色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

vue computed 底層

劉柏宏1年前7瀏覽0評論

在vue中,一個常見的屬性是computed。它是一個計算屬性,只有在依賴的數據發生改變時才會重新計算,而不是每次渲染都重新計算。那么computed屬性的底層是如何實現的呢?

computed屬性的本質是一個函數,它接收一個對象作為參數。這個參數對象包含了依賴的數據,每當這些數據發生變化時,computed函數都會重新計算。

const dep = {
a: 1,
b: 2,
};
const computedFn = function () {
console.log(dep.a + dep.b);
};
const reactiveDep = new Proxy(dep, {
get(target, key, receiver) {
/*...*/
},
set(target, key, value, receiver) {
/*...*/
},
});
// 在computed函數中訪問依賴的數據
computedFn.call(reactiveDep); // 3

在computed函數中,我們使用了Proxy對象監聽了dep對象的訪問和修改。每當訪問或修改dep對象時,Proxy對象就會攔截這些操作并通知computed函數。

由于Proxy對象是ES6提供的新特性,因此在一些不支持ES6的環境中,如IE瀏覽器,computed屬性將無法工作。但是vue團隊考慮到這點,在vue2.x版本中,對computed屬性做了兼容處理,使其能夠在不支持ES6的環境中正常工作。