Js中的Call()和apply()方法

call和apply都是Function对象的原型方法,它们是把特定的函数当作一个方法绑定到指定的对象上进行调用。

apply和call的方法和功能用法相同,区别是他们传递的参数的方式不同,其中apply()是用数组的方式进行传递参数,call方法则用数值的方式进行传递参数。而且call()方法只能接受多个参数列表,apply()方法只能接收数组或者伪类数组,数组元素将作为参数传递给被调用的函数。

call的具体用法如下:

funaction.call(thisobj,args...)

apply的具体用法如下:

function.apply(thisobj,args...)

其中的参数thisobj是指定对象,参数args表示要传递给被调用函数的参数。

具体的用法示例:

function f(x,y){//定义一个简单的函数
return x+y;
}
function o(a,b){//定义一个函数结构体
return a*b;
}
alert(f.call(o,(3,4))//返回值为7

call方法则为alert(f.apply(o,[3,4]));其返回值也为7;

call和apply方法是把一个函数转化为指定对象的方法,并在该对象上调用该函数,函数并没有做为对象的方法而存在,函数被动态调用之后,临时方法就会被注销。

function f(){}//定义空函数
f.call(0bjict);//把函数f()绑定为object方法
objict.f();//再次调用该方法,则返回编译错误

call和apply方法可以动态的改变函数this指代的对象。下面使用call方法不断改变函数内this指代对象,通过改变call方法的第一个参数来实现。

var x="o"
fuction a(){
this.x="a";
}
fuction b(){
this.x="b";}
fuction c(){
alert(x);
}
fuction d(){
alert(this.x);
}
f();返回字符o,及全局变量X的值,此时指向widow对象
f.call(window);//返回字符字符哦o,及全局变量x的值,此时指向window对象
f.call(mew a());//返回字符a,及函数a内部局部变量x的值,this此时指向函数a
f.call(new b());//返回字符b,及函数b内部局部变量心得值,this此时指向函数b
f.call(c);返回undefinded,及函数d内部的函数变量x的值,但该函数并没有定义x变量所以返回无定义,this此时指向函数c
在函数体内call和apply的第一个参数就是调用函数内this的值。
fuction f(){
this.a="a";
this.b=function(){
alert("b');
}
}
fuction e(){
f.call(this);//函数体内动态的调用函数发(),this指代函数e()
alert(a);//显示变量a的值
}
e()//返回字符串a
如果用函数体动态的调用外部函数,并把第一个参数值设置为关键字this,则当前函数额()将继承所有的属性。也就是call和apply方法能够复制调用函数内部变量给当前函数体。



  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值