我在看教程,为什么你可以调用Array.prototype.pop.apply或者在没有指定thisArg的情况下调用?注意计算表达式中第1行和第3行的差异。在没有thisargument的情况下在Array.prototype.apply中使用fn?
例如:
var calculate = function() {
var fn = Array.prototype.pop.apply(arguments);
console.log(fn);
return fn.apply(null, arguments);
};
var sum = function (x, y) {
return x + y;
};
var diff = function (x, y) {
return x - y;
}
var x = calculate(5, 3, sum);
如果我这样做,我得到一个错误:未捕获的类型错误:Array.prototype.pop呼吁null或未定义的Default.aspx:54(匿名函数)
var fn = Array.prototype.pop.apply(null, arguments);
你想在'arguments.pop'这样的参数上调用'pop',这意味着'this'是参数。所以它应该是'Array.prototype.pop.apply(arguments);' –