什么是'这个'在这个使用memsize的这个js实现中的应用?

时间:2016-06-29 16:32:05

标签: javascript this apply

mq

我只是想了解为什么'这个'用于func.apply这里......它指的是什么?

1 个答案:

答案 0 :(得分:1)

如果函数调用具有相同的第一个参数(例如memoize),则函数1将返回一个缓存结果的新函数。

function#apply有两个参数:

  1. 当前上下文(函数中的a.k.a. this
  2. 您要传递的参数数组(类似)。
  3. 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}}。