代码如下:
Function.prototype.after = function(func) {
var self = this;
return function() {
var ret = self.apply(this, arguments)
if (!ret) {
return false
}
return func.apply(this, arguments)
}
}
Function.prototype.before = function(func) {
var self = this;
return function() {
var ret = func.apply(this, arguments)
if (!ret) {
new Error("错误")
return false
}
return self.apply(this, arguments)
}
}
测试用例如下:
function A(param) {
console.log(".............A")
param.age ++
console.log(param);
return true;
}
function B(param) {
console.log("..............B")
param.b = 'b';
console.log(param);
return true
}
var aAfterB = A.after(B);
var aBeforeB = A.before(B);
aBeforeB({
name: 'a',
age: 29
})
// ..............B
// Object {name: "a", age: 29, b: "b"}
// ..............A
// Object {name: "a", age: 30, b: "b"}
aAfterB({
name: 'a',
age: 29
})
// ..............A
// Object {name: "a", age: 30}
// ..............A
// Object {name: "a", age: 30, b: "b"}