呼叫和应用有什么区别?

呼叫和应用有什么区别?

使用callapply去调用一个函数?

var func = function() {
  alert('hello!');};

func.apply();VSfunc.call();

上述两种方法之间是否存在性能差异?什么时候最好用call过关apply反之亦然?


当年话下
浏览 490回答 4
4回答

慕斯709654

基本上,他们在处理函数参数的方式上有所不同。Apply()方法与调用()完全相同,但Apply()需要一个数组作为第二个参数。数组表示目标方法的参数。“因此:// assuming you have ffunction f(message) { ... }f.call(receiver, "test");f.apply(receiver, ["test"]);

蝴蝶刀刀

若要回答有关何时使用每个函数的部分,请使用apply如果您不知道要传递的参数的数量,或者它们已经在数组或类似数组的对象中(如arguments对象以转发您自己的参数。使用call否则,因为不需要将参数包装在数组中。f.call(thisObject, a, b, c); // Fixed number of argumentsf.apply(thisObject, arguments);  // Forward this function's argumentsvar args = [];while (...) {     args.push(some_value());}f.apply(thisObject, args); // Unknown number of arguments当我没有传递任何参数时(比如你的例子),我更喜欢call既然我呼叫功能。apply意味着你是应用(不存在的)参数的函数。不应该有任何性能差异,除非您使用apply并将参数包装在数组中(例如,f.apply(thisObject, [a, b, c])而不是f.call(thisObject, a, b, c))。我还没有测试它,所以可能会有差异,但它将非常特定于浏览器。很可能call如果数组中没有参数,并且apply如果你这么做会更快。

慕标琳琳

这是一个很好的助记符。Apply用途A射线和A总是有一两次争论。当你使用C你要做的就是C算出参数的数量。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript