`func.call(null,..)`做什么?

时间:2016-01-24 07:57:53

标签: javascript

var f1 = function(input) {
    var result = 1;
    return result;
}

var get_encrypted = function(func) {
    var str = 'zzoon';

    return function() {
        return func.call(null, str);
    }
}

var encrypted_value = get_encrypted(f1)();

我无法理解这段代码。 func.call(null,str);是什么意思? 请整体解释这段代码。

1 个答案:

答案 0 :(得分:0)

首先,这是对Function.prototype.call()的引用。

基本上,call()中的第一个参数是您希望在被调用函数中使用的this对象。 在这种情况下,被调用的函数是f1,代码为:get_encrypted(f1)

因此get_encrypted将函数f1作为参数,然后调用f1thisnull(当nullf1时作为第一个参数传递)。现在this可以在其代码中使用this,但在这种情况下,由于nullf1,因此不值得。 'zzoon'也将input作为input的第二个参数,但忽略了get_encrypted

get_encrypted(f1)();被代码f1调用时,它返回函数f1的结果(返回结果的函数),其中null使用或者可能使用this作为1。此结果为fileDownload