function wrap(value, wrapper) {
return function() {
var args = [value];
push.apply(args, arguments);
return wrapper.apply(this, args);
};
}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
如果我印象沒記錯,你這代碼可能不太全,這應該是
underscore的wrap函數作用是包裝一個函數進行擴展
舉個例子,現在有一函數
greeting可以打招呼:那現在我要現有函數的基礎下進行擴展,讓其能對人打招呼
this永远是表示上下文的 开一个例子
这里给了a()一个调用对象, this就是指向b. 这里的push应该是this.push, 不然感觉会报错啊
call的意思就是替换上下文, 这里本来是b.push(arguments), 替换之后会变成args.push(arguments)
仅仅是函数调用,此处this指向全局变量global(浏览器window,NodeJS global)。
此处this是 指向wrapper,谁调用指向谁。这个像是wrap函数的源码,它可以将函数再包裹一层,返回一个新的函数,新的函数里面可以调用原来的函数,将原函数的处理结果再处理一次返回。类似与AOP切面。在函数处理前/后动态的添加一些额外的处理。