如果你还不熟悉JavaScript 中this,请先学习this。
call()
简单的说就是改变this
的指向
改变函数的调用方式
下面看几个例子:
例子一:
function b() {
this.style.background = "red"
};
现在this
指定是window
所以调用它会报错,而
obj.onclick = function() {
b.call(this);
};
因为call
改变的this
的指向,现在调用this
的人变成了obj
所以this
的指向现在变成了obj
所以当点击obj
的时候obj
的颜色就会改变。
例子二:
function fn1() {
console.log(1);
}
function fn2() {
console.log(2);
}
fn1.call(fn2); // 1
fn1.call.call(fn2); // 2
例子三:
var arr = [1,2,3,4,5,6,7,8]
var a = arr.shift();
var b = Array.prototype.shift.call(arr)
a
和b
是等价的,使用call
可以改变函数的调用形式