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