在装饰器模式中,可以像这样重新定义原始函数:original = wrapper(original)
. 为什么wrapper2
在下面的示例中使用原始aa
函数 (a + b),如果它已被wrapper
之前的函数重新定义 (a + b + 12)?
function aa(a, b) {
return a + b
}
console.log(aa) //function aa(a,b) {return a+b}
console.log(aa(1, 2)) //3
function wrapper(fn) {
return function() {
return arguments[0] + arguments[1] + 12
}
}
aa = wrapper(aa)
console.log(aa) //function(){return arguments[0]+arguments[1]+12}
console.log(aa(1, 2)) //15
function wrapper2(fn) {
return function() {
return arguments[0] + arguments[1] + 120
}
}
aa = wrapper2(aa)
console.log(aa) //function(){return arguments[0]+arguments[1]+120}
console.log(aa(1, 2)) //123