??主要就是兩個函數(shù)倒庵,在Function的原型上加上before與after,作用就是字面的意思革娄,在函數(shù)的前面或后面執(zhí)行毕荐,相當于無侵入把一個函數(shù)插入到另一個函數(shù)的前面或后面束析,應用得當可以很好的實現(xiàn)代碼的解耦,js中的代碼實現(xiàn)如下:
Function.prototype.before = function (fn) {
let that = this;
return function (...params) {
fn.apply(this, params)
return that.apply(this, params)
}
}
Function.prototype.after = function (fn) {
let that = this;
return function (...params) {
let result = that.apply(this, params)
if (result === false) {
return
}
fn.apply(this, params)
return result
}
}
應用的一些例子:
- 為window.onload添加方法憎亚,防止window.onload被二次覆蓋
- 無侵入統(tǒng)計某個函數(shù)的執(zhí)行時間
- 表單校驗
- 統(tǒng)計埋點
- 防止csrf攻擊