call() 和 apply()
- 这两个方法都是函数对象的方法,需要通过函数对象来调用
- 当对函数调用 call() 和 apply() 都会调用函数执行
在调用 call() 和 apply() 可以将一个对象指定为第一个参数
可以将实参在对象之后依次传递
function fun(a,b){ // console.log(this.name); console.log(a); console.log(b); } var obj = {name:"你好"}; var obj2 = {name:"世界"}; // fun(); fun.call(obj,1,2); // 1 2
apply()
需要将实参封装到一个数组中统一传递
function fun(a,b){ // console.log(this.name); console.log(a); console.log(b); } var obj = {name:"你好"}; var obj2 = {name:"世界"}; // fun(); // fun.call(obj,1,2); fun.apply(obj,[1,2]); // 1 2
this的情况:
- 以构造函数形式调用时,this永远都是 window
- 以方法的形式调用时,this使调用方法的对象
- 以构造函数的形式调用时,this是新建创建的那个对象
- 使用 call 和 apply 调用时,this是指定的那个对象