欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

vue computed 底層

劉柏宏2年前8瀏覽0評論

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

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

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函數(shù)中訪問依賴的數(shù)據(jù)
computedFn.call(reactiveDep); // 3

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

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