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

vue compute 對象變了

錢衛國1年前8瀏覽0評論

在Vue中,我們經常會使用computed屬性去計算一些屬性值,Vue會根據依賴自動更新這些屬性。而在computed屬性中我們還可以使用一個特殊的對象,叫做“計算屬性緩存對象”,這個對象包含了computed函數的執行狀態,包括緩存值、依賴等信息。

const vm = new Vue({
data() {
return {
name: '張三',
age: 18
}
},
computed: {
cName() {
return `我的名字是${this.name}`
},
cAge: {
get() {
return `我今年${this.age}歲`
},
set(value) {
this.age = value
}
}
}
})
console.log(vm.$options.computed.cName.__computeCache) // 計算屬性緩存對象
console.log(vm.$options.computed.cName.__computeDeps) // 計算屬性依賴

上述代碼中,我們通過訪問Vue實例的$options屬性可以找到computed屬性中定義的計算屬性緩存對象和計算屬性依賴。這些信息是在運行時被存放到計算屬性緩存對象中的。

但是,如果在極端情況下,我們手動修改了計算屬性緩存對象或者計算屬性依賴,那么就可能導致計算屬性的狀態發生異常,Vue無法正常管理計算屬性了。

const vm = new Vue({
data() {
return {
name: '李四',
age: 20
}
},
computed: {
cName() {
return `我的名字是${this.name}`
},
cAge: {
get() {
return `我今年${this.age}歲`
},
set(value) {
this.age = value
}
}
}
})
const cache = vm.$options.computed.cName.__computeCache
const deps = vm.$options.computed.cName.__computeDeps
// 修改緩存值
cache.value = '王五'
// 修改依賴
deps[0].__callbacks[0] = function() {}
console.log(vm.cName) // 輸出:'王五'

上述代碼中,我們手動將計算屬性緩存對象的值修改為"王五",而且還將計算屬性依賴的回調函數修改為一個空函數,這樣就會導致計算屬性的狀態變為異常狀態了,在console中可以看到我們已經成功修改計算屬性的值為"王五"了。

總之,在使用Vue計算屬性時,我們應該避免手動修改計算屬性緩存對象和依賴,如果確實需要修改,那么一定要謹慎操作,以免引起計算屬性異常。