请在javascript中解释应用和调用方法
可能重复:
通话和申请有什么区别?
应用程序和调用方法之间的主要区别是什么...我通过网络,但无法找到最佳解决方案..请帮助我的朋友...
除了缺省参数之外,JavaScript中的每个函数都会接收两个对象。 这是this
和arguments
。 值this
是由它的调用模式来确定。 apply
或call
可被用来调用一个函数,并为其提供一个默认的this
对象。
这在许多情况下会非常有用。 例如, arguments
是一个类似数组的对象,但并不是真正的Array
包含所有有用的Array方法。 所以,要在arguments
上应用Array方法slice
,可以这样做:
Array.prototype.slice.apply(arguments, [1, 2])
如果arguments
是Array
类型的对象,则可以使用
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