参考:js中的call()和apply()方法
call、apply、bind方法详解
call()和apply()作用一样,接收参数的方法不太一样
一、call()和apply()方法定义
语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]),apply([thisObj[,argArray]])
应用某一对象的一个方法,用另一个对象替换当前对象。
示例:
function Animal(){
this.name = "Animal";
this.showName = function(){
alert(this.name);
}
}
function Cat(){
this.name = "Cat";
}
var animal = new Animal();
var cat = new Cat();
//通过call或apply方法,将原本属于Animal对象的showName()方法交给对象cat来使用了。
//输入结果为"Cat"
animal.showName.call(cat,",");
//animal.showName.apply(cat,[]);
可以看成:cat继承了animal的showName方法并调用执行
二、call()和apple()异同
同:第一个参数都是函数运行的作用域(this)
异:call 的第二个参数可以是任意类型,而apply的第二个参数必须是数组或类数组(如arguments 还有 callee,caller…)
三、原理
call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向。
上述实例中,即把animal的this指向cat。
本文详细解析了JavaScript中的call和apply方法,包括它们的语法、应用实例以及与bind方法的区别。阐述了如何通过这两个方法改变函数运行时的上下文,即this的指向,实现对象之间的方法借用。

8152

被折叠的 条评论
为什么被折叠?



