使用 apply() 与 call(),在这种情况下使用哪一个
Using apply() vs call(), which one to use in this case?
看看 Leaflet API 中的代码
我的问题是为什么wrapperFn.apply(context, args);</code> and <code>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 接受单个参数数组,对于方法链接很有用,相当于在 Java 等中调用 super.
function makeNoise() {
Foo.prototype.makeNoise.apply(this, arguments);
}
调用需要参数列表,更有用的其他情况,其中参数仅作为单个变量可用。
fn.call(this, x, y, z);
这只是简写
fn.apply(this, [x, y, z])
给定您需要使用 apply() 的参数数组
相关文章:
- 如何解决这种情况下的非法调用类型错误
- 为什么在这种情况下,“This”确实充当javascript函数中的私有成员
- 在这种情况下,如何正确对齐显示
- 如何通过Primefaces3.5使用JSF2.0验证并在成功的情况下打开一个新的选项卡
- 为什么jQuery悬停方法在这种情况下不起作用
- 在这种情况下,如何获取选定的表tr行
- 如何使多个工作在这种情况下
- 在这种情况下如何使用闭包
- 为什么在这种情况下要向JQuery添加两个链接
- 有没有任何情况下,一个方法不应该是原型方法
- 为什么push方法没有'在这种情况下不起作用:[].推
- 在这种情况下,*[Symbol.iterator]的含义是什么
- 在这种情况下,调用阻止默认值
- 如何停止两个按钮执行相同的工作?在这种情况下,它们都会滚动到顶部
- 使用 apply() 与 call(),在这种情况下使用哪一个
- 键入.js脚本在iPhone6中不起作用,如果任何单词将在该行完成,在这种情况下,另一个单词不键入,仅显示光标
- 在这种情况下,我将如何使用 javascript 创建一个承诺函数
- 为什么在这种情况下调用 ES6 时“产生”是一个保留字
- 为什么apply在这种情况下只接受一个参数
- 在这种情况下,如何转到html5-history推送的上一个url