call和apply的区别及用法
Posted 不负韶华
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了call和apply的区别及用法相关的知识,希望对你有一定的参考价值。
ECAMScript3给Function的原型定义了两个方法,Function.prototype.call 和Function.prototype.apply。
区别仅在于传入的参数形式不同。
var func=function(a,b,c){ console.log([a,b,c]); } func.apply(null,[1,2,3]);//输出[1,2,3] func.call(null,1,2,3);//输出[1,2,3]
用法:
1、改变this指向。call和apply最常见的用途是改变函数内部的this指向。
var name="window" var obj1={ name:"obj1" }; var ob2={ name:"obj2" }; var getName=function(){ console.log(this.name); } getName();//window getName.call(obj1);//obj1 this指向obj1 getName.call(obj2);//obj2 this指向obj2
2、借用其他对象的方法
var A={ name:"小王", getName:function(){ console.log(this.name); } }; var B={ name:"丽丽" }; A.getName.call(B);
以上是关于call和apply的区别及用法的主要内容,如果未能解决你的问题,请参考以下文章