JavaScript中的apply和call
这两个方法都可以改变函数的this指向。
function a(id) {
this.id = id;
}
function b(id) {
this.id = id,
this.sayId = function () {
alert(this.id);
}
}
var b1 = new b(2);
var a1 = new a(1);
b1.sayId();// 2
b1.sayId.call(a1);// 1
call和apply接收的第一个参数为函数运行的作用域。
b具有方法sayId()但a没有,利用b1调用自身方法能够输出id,用call方法将b1的sayId()方法的作用域变成a1,此时b的sayId()中的this指向a1。
apply()和call()的区别
第一个参数相同,第二个参数不同,apply接收数组类型或arguments,而call需要列举每一项需要传递的值。根据使用时的方便与否决定用apply还是call。