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

vue computed源碼

夏志豪2年前9瀏覽0評論

Vue.js是一個流行的前端框架,其中的computed屬性是非常常用的一個特性。它可以根據已有的屬性計算得出一個新的屬性值,避免了在模板中進行冗長的計算和操作。computed的實現是通過Vue源碼中的computed屬性來實現的。

computed的定義有三個重要的參數:get、set、cache。在源碼中通過以下代碼來定義:

Object.defineProperty(computedSetter[key], 'get', createComputedGetter(key));
...
function createComputedGetter (key) {
return function computedGetter () {
const watcher = this._computedWatchers && this._computedWatchers[key]
if (watcher) {
if (watcher.dirty) {
watcher.evaluate()
}
if (Dep.target) {
watcher.depend()
}
return watcher.value
}
}
}

在這里,我們看到了一個非常重要的概念:Watcher。在Vue中,Watcher是一個很重要的實體,它用來建立響應式數據與計算屬性之間的關聯。在computedGetter函數中,首先查找到與當前computed屬性相關聯的Watcher對象,然后進行依賴收集和計算。

每一個計算屬性都會對應著一個Watcher對象,通過這個Watcher實現響應式地更新計算屬性。當計算屬性依賴的屬性發生變化時,Watcher對象會將計算屬性標記為dirty,并將其加入到待更新隊列中。在下一次更新時,所有標記為dirty的計算屬性都會被重新計算并更新。

總結一下,Vue中的computed屬性使用了Watcher對象來建立響應式關系,并通過緩存結果來優化性能。computedGetter函數中會進行依賴收集并計算出最新的屬性值,Watcher會在必要時進行更新并更新視圖。