js中的call()和apply()方法
程序员文章站
2024-02-28 21:05:37
...
参考: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。
上一篇: MySQL定期分析检查与优化表的方法小结
下一篇: JS中的call()和apply()方法