Using apply() vs call(), which one to use in this case?
本问题已经有最佳答案,请猛点这里访问。
查看传单API中的代码
我的问题是为什么
你怎么知道该用哪一个?
很困惑,因为我不知道我的传递函数是否使用数组。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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等方面。
1 2 3 | function makeNoise() { Foo.prototype.makeNoise.apply(this, arguments); } |
调用接受参数列表,在其他情况下,参数仅作为单个变量可用,这更有用。
1 | fn.call(this, x, y, z); |
这只是一个简写
1 | fn.apply(this, [x, y, z]) |
如果您有一个参数数组,则需要使用apply()。