call是什么
2020-01-02 本文已影响0人
回不去的那些时光
call方法
- call() 方法是预定义的 JavaScript 方法。
它可以用来调用所有者对象作为参数的方法。
通过 call(),可以改变this,谁调用call方法就改变谁的this - 第一个参数是谁,this就是谁,第二个及以后的参数才为方法传值
var obj = { name: "dj" }
function Fn(num1, num2) {
console.log(num1 + num2);
console.log(this);
}
// 非严格模式下
Fn(100, 200); // this->window num1=100 num2=200
Fn.call(100, 200); // this->100 num1=200 num2=undefined
Fn.call(obj, 100, 200); // this->obj num1=100 num2=200
Fn.call(); // this->window
Fn.call(null); // this->window
Fn.call(undefined); // this->window
// 严格模式下
Fn(100, 200); // this->undefined
Fn.call(100, 200); // this->100
Fn.call(obj, 100, 200); // this->obj
Fn.call(); // this->undefined
Fn.call(null); // this->null
Fn.call(undefined); // this->undefined