【发布时间】:2014-01-13 21:47:25
【问题描述】:
我在看一个教程,为什么你可以调用 Array.prototype.pop.apply 或在没有指定 thisArg 的情况下调用?注意计算表达式中第 1 行和第 3 行的差异。
例如:
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);
如果我这样做,我会收到一个错误:Uncaught TypeError: Array.prototype.pop called on null or undefined Default.aspx:54 (anonymous function)
var fn = Array.prototype.pop.apply(null, arguments);
【问题讨论】:
-
你想在
arguments.pop这样的参数上调用pop,这意味着this是参数。所以应该是Array.prototype.pop.apply(arguments);
标签: javascript