JavaScript中apply和call的用法区别

来源:互联网 发布:多益网络账号游戏绑定 编辑:程序博客网 时间:2024/05/17 03:29

apply和call属于prototype的属性,这意味着任何对象都可以使用。apply和call的作用在于动态改变函数执行的上下文环境对象。

 

function test(v1, v2, v3) {    alert(v1+v2+v3);}var obj = {};obj.m = test;obj.m(1,2,3);obj.m.call(this,1,2,3);var args = [1,2,3];obj.m.apply(this,args);

 

从结果可以看出:

foo.call(this, arg1,arg2,arg3) == foo.apply(this, arguments)==this.foo(arg1, arg2, arg3),函数执行的上下文对象this始终指向obj。apply和call作用相同,不同的地方在于调用的时候函数参数的传递,call传递的是与函数对应的参数列表,而apply传递的是参数数组。