function wrap(value, wrapper) {
return function() {
var args = [value];
push.apply(args, arguments);
return wrapper.apply(this, args);
};
}function wrap(value, wrapper) {
return function() {
var args = [value];
push.apply(args, arguments);
return wrapper.apply(this, args);
};
}var greetingTo = wrap(greeting, function(func, name) {
return name + func()
})
console.log(greetingTo('王大錘')) // => 王大錘你好!
‘王大锤’这个参数怎么传过去的?@Tomoethis永远是表示上下文的 开一个例子
var a = wrap(10, function(){});
var b = [11];
b.a();
这里给了a()一个调用对象, this就是指向b. 这里的push应该是this.push, 不然感觉会报错啊
call的意思就是替换上下文, 这里本来是b.push(arguments), 替换之后会变成args.push(arguments)
1 回答859 阅读✓ 已解决
1 回答1.1k 阅读
2 回答779 阅读
2 回答622 阅读
2 回答610 阅读
1 回答683 阅读
2 回答531 阅读
如果我印象沒記錯,你這代碼可能不太全,這應該是
underscore的wrap函數作用是包裝一個函數進行擴展
舉個例子,現在有一函數
greeting可以打招呼:那現在我要現有函數的基礎下進行擴展,讓其能對人打招呼