mq
我只是想了解为什么'这个'用于func.apply这里......它指的是什么?
答案 0 :(得分:1)
如果函数调用具有相同的第一个参数(例如memoize
),则函数1
将返回一个缓存结果的新函数。
function#apply
有两个参数:
this
) this
只是引用调用函数的上下文。将它传递给apply
只会确保你的memoized函数继续按照常规JS函数的方式工作。
一些例子:
var a = function(number) {
console.log(this);
}
var b = _.memoize(a);
a(1); // this refers to window
b(1); // this refers to window as well
a.call({ test: true }); // this refers to { test: true }
b.call({ test: true }); // this refers to { test: true } as well
如果您以null
代替this
而不是func.apply
作为cache[n] = func.apply(null, arguments);
的第一个参数...
a(1); // this refers to window
b(1); // this refers to window as well
a.call({ test: true }); // this refers to { test: true }
b.call({ test: true }); // this refers to window
......它不再适用了:
this
并且strict mode null
b
始终为{{1}}。