看一下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 次 |
| 最近记录: |