查看Leaflet api的代码
我的问题是为什么wrapperFn.apply(context, args);
和fn.apply(context, args);
使用apply()而不是call()。
你怎么知道使用哪一个?
感到困惑,因为如果我的传递函数是否正在使用数组,我提前不知道。
limitExecByInterval: function (fn, time, context) { var lock, execOnUnlock; return function wrapperFn() { var args = arguments; if (lock) { execOnUnlock = true; return; } lock = true; setTimeout(function () { lock = false; if (execOnUnlock) { wrapperFn.apply(context, args); execOnUnlock = false; } }, time); fn.apply(context, args); }; },
答案 0 :(得分:1)
Apply需要一个参数数组,对方法链接很有用,javascript相当于调用super。在Java等。
function makeNoise() {
Foo.prototype.makeNoise.apply(this, arguments);
}
调用获取参数列表,更有用的其他情况,其中参数仅作为单个变量可用。
fn.call(this, x, y, z);
这只是
的简写fn.apply(this, [x, y, z])
鉴于您有一系列参数,您需要使用apply()