看一下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); }; },
Apply 接受单个参数数组,对于方法链接很有用,相当于调用 super 的 javascript。在Java等中
function makeNoise() {
Foo.prototype.makeNoise.apply(this, arguments);
}
Run Code Online (Sandbox Code Playgroud)
调用采用参数列表,在参数仅作为单个变量使用的其他情况下更有用。
fn.call(this, x, y, z);
Run Code Online (Sandbox Code Playgroud)
这只是简写
fn.apply(this, [x, y, z])
Run Code Online (Sandbox Code Playgroud)
假设你有一个参数数组,你需要使用 apply()
归档时间: |
|
查看次数: |
296 次 |
最近记录: |