请在javascript中解释应用和调用方法

可能重复:
通话和申请有什么区别?

应用程序和调用方法之间的主要区别是什么...我通过网络,但无法找到最佳解决方案..请帮助我的朋友...


除了缺省参数之外,JavaScript中的每个函数都会接收两个对象。 这是thisarguments 。 值this是由它的调用模式来确定。 applycall可被用来调用一个函数,并为其提供一个默认的this对象。

这在许多情况下会非常有用。 例如, arguments是一个类似数组的对象,但并不是真正的Array包含所有有用的Array方法。 所以,要在arguments上应用Array方法slice ,可以这样做:

Array.prototype.slice.apply(arguments, [1, 2])

如果argumentsArray类型的对象,则可以使用

arguments.slice(1, 2) 

call只不过是适用的修改版本。 看到难以捉摸的评论。

Mr.Douglus Crockford对本视频中的JavaScript功能进行了很好的介绍:功能最终。


.apply().call()非常相似。 唯一的区别是他们如何将参数传递给被调用的函数。 .apply()接受一组参数,而.call()可以像常规函数调用一样使用:

someFunction.apply(context, [argument1, argument2]);

相当于:

someFunction.call(context, argument1, argument2);

主要区别在于call接受参数列表,其中第一个参数之后的参数直接传递给方法:

myFunc.call(thisObj, arg1, arg2, arg3);

apply只接受两个参数 - 第一个是this对象,第二个是传递给方法的参数数组:

myFunc.apply(thisObj, [arg1, arg2, arg3]);

apply通常用于您希望将arguments对象(包含传递给当前函数的参数列表)传递给另一个方法的情况:

function myOtherFunc(arg1, arg2, arg3) {
    if (typeof arg1 == "object" && arg1 !== null)
        myFunc.apply(this, arguments);
}
链接地址: http://www.djcxy.com/p/18037.html

上一篇: please explain the apply and call methods in javascript

下一篇: Pass unknown number of parameters to JS function