數(shù)組變異方法(vue: ^2.0)

Object.defineProperty 監(jiān)聽(tīng)攔截中存在的一些問(wèn)題

@:Vue框架中監(jiān)聽(tīng)數(shù)組屬性值的變化

Object.defineProperty(x, '?' , {})無(wú)法指定數(shù)組中需要監(jiān)聽(tīng)的屬性值

這時(shí)我們通過(guò)變異的方法來(lái)處理(攔截push方法)

??

let arr = [1,2,3]

let push = Array.prototype.push;

Array.prototype.push = function (...args) {

? ? console.log( '變異方法' ) // 監(jiān)聽(tīng)處理

? ? push( ...args )? // 這里需要處理this指向問(wèn)題

? ? push.call( this, ...args )

}

arr.push(args)

上面通過(guò)重寫(xiě)push方法來(lái)處理,當(dāng)有push方法調(diào)用時(shí)會(huì)執(zhí)行我們自定義的push方法,每次有push動(dòng)作都會(huì)被監(jiān)聽(tīng)到了

上面只是一個(gè)栗子

數(shù)組方法: push pop shift unshift splice sort reverse 都可以用這種方法處理

有些數(shù)組方法為啥沒(méi)改寫(xiě)?

這是因?yàn)橄駀ilter map 這些方法 并不是改原有數(shù)組,而是返回一個(gè)新數(shù)組

本人的一點(diǎn)總結(jié),如有不足之處,多多指點(diǎn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容