call() and apply()
这两个方法都是函数对象方法,需要通过函数对象来调用。---》将一个对象指定第一个参数
这个对象将会成为函数执行时的this;修改函数执行的对象。
call将实参在对象之后依次传递
apply方法将实参封装在一个数组中统一传递。
function fun(a,b){
console.log("a = "+a);
console.log("b = "+b);
};
var obj = {
name:"obj1",
sayName:function(){
alert(this.name);
}
};
var obj2 = {
name:"obj2"
};
/*fun.call(obj);*/
fun.call(obj,2,3);
fun.apply(obj,[2,3]);
/*var obj1 = {name:"obj2"};*/
/*fun.call();*/
obj.sayName.apply(obj);
/*obj.sayName.apply(obj2);*/
this情况:
以函数形式调用时,this==window
以方法形式调用时,this==调用方法的对象
以构造函数调用的时,this = 新创建的对象、
以为call和apply调用时候,this= 指定的对象