js 面向切面程式設計
阿新 • • 發佈:2019-01-10
概念
(AOP)面向切面程式設計,主要實現的目的是針對業務處理過程中的切面進行提取,它所面對的是處理過程的某個步驟或者階段,以獲得邏輯過程中各部分之間低耦合性的隔離效果.
也就是說,在業務邏輯開始之前與結束之後進行操作,不干擾業務邏輯的具體過程.
Function.prototype.before = function(fn){
var _self = this
return function () {
//返回值判斷,如果為false那麼不執行,表示業務邏輯執行失敗
if(fn.apply(this,arguments) === false ){
return false
}
return _self.apply(_self,arguments)
}
}
Function.prototype.after = function(fn){
var _self = this;
return function () {
var result = _self.apply(_self,arguments)
//after有返回值判斷,如果為false那麼不執行,表示業務邏輯執行失敗
if(result === false ){
return false;
}
fn.apply(this,arguments)
return result
}
}
function test(val){
console.log(val)
}
// 編寫初始處理
function fInter(val){
if(isNaN(val)){
return false
}
console.log(val-1)
}
//編寫後續處理
function fOuter(val){
if(val <= 10){
return false
}
console.log(val+1)
}
//執行的時候需要這麼操作
test.before(fInter).after(fOuter)(8)
test.before(fInter).after(fOuter)(12)
test.before(fInter).after(fOuter)('hello')