请在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
