1.定义:
两个方法都是函数对象的方法,需要通过函数对象来调用
当对函数call()和apply()都调用函数执行
调用call()和apply()可以将一个对象指定未第一个参在此时这个对象将会成为函数执行时的this
call()方法可以将实参在对象之后依次传递
apply()方法需要将实参封装到一个数组中传递
this的情况:
1.以函数形式调用时,this永远都是window
2.以方法的形式调用时this是调用方法的对象
3.以构造函数的形式调用时其是新创建的那个对象
4.使用call和apply调用时this时指定的那个对象
2. 例子
var obj={
name:"张三",
age:20
};
function method(){
console.log(this);//window
}
method();
this指向的是window,那么怎么让他指向当前对象obj呢?
方法1:使用call
var obj={
name:"张三",
age:20
};
function method(a,b,c){
console.log(this,a,b,c);//{name: "张三", age: 20} 1 2 3
}
method.call(obj,1,2,3);
方法2:使用apply
var obj={
name:“张三”,
age:20
};
function method(a,b,c){
console.log(this,a,b,c);//{name: “张三”, age: 20} 1 2 3
}
method.apply(obj,[1,2,3]);