call()与apply()的区别与作用
Posted 月疯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了call()与apply()的区别与作用相关的知识,希望对你有一定的参考价值。
1、概念
call,apply都属于Function.prototype的一个方法,它是javascript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例(就是每个方法)都有call,apply属性。既然作为方法的属性,那它们的使用就当然是针对方法的了,这两个方法是容易混淆的,因为它们的作用一样,只是使用方式不同。
2、作用:
call()
方法和apply()
方法的作用相同:改变this指向。
3、他们的区别在于接收参数的方式不同:
call()
:第一个参数是this值没有变化,变化的是其余参数都直接传递给函数。在使用call()
方法时,传递给函数的参数必须逐个列举出来。
apply()
:传递给函数的是参数数组
<script type="text/javascript">
function A(){
this.flag = 'A';
this.tip = function(){
alert(this.flag);
};
}
function B(){
this.flag = 'B';
}
var a = new A();
var b = new B();
//a.tip.call(b);
a.tip.apply(b);
</script>
4、代码解释
(1)实例代码定义了两个函数A和B,A中包含flag属性和tip属性(这个属性赋值一个函数),B中有一个flag属性。
(2)分别创建A和B的对象a和b。
(3)无论是a.tip.call(b);和a.tip.apply(b);运行的结果都是弹出B。
(4)从结果中可以看出call和apply都可以让B对象调用A对象的tip方法,并且修改了this的当前作用对象。
以上是关于call()与apply()的区别与作用的主要内容,如果未能解决你的问题,请参考以下文章