apply、call和bind方法的不同点
1、call方法是最简单的,它等价于指定this值调用函数
例如:
var user={
name:"zhangsan",
what'sYourName:function(){
console.log(this.name);
}
};
user.what'sYourName(); //结果打印zhangsan
var user2={
name:"lisi"
};
user.what'sYourName.call(user2);//lisi
user.what'sYourName.apply(user2);//lisi
apply方法和call方法类似,两者唯一的不同在于,apply方法使用数组指定参数,而call方法每个参数单独需要指定;
apply(thisArg,[argsArray])
call(thisArg,arg1,arg2,...)
例如:
var user={
greet:"hello",
greetUser:function(username){
console.log(this.greet+" "+username);
}
};
var greet1={
greet:"hola"
};
user.greetUser.call(greet1,"lisi");//hola lisi
user.greetUser.apply(greet1,["lisi"]);//hola lisi
bind方法,可以为函数绑定this值,然后作为一个新的函数返回:
例如:
var user={
greet:"hello",
greetUser:function(username){
console.log(this.greet+" "+username);
}
};
var greethola=user.greetUser.bind({greet:"hola"});
var greetbonjour=user.greetUser.bind({greet:"bonjour"});
greethola("lisi");//hola lisi
greetbonjour("lisi");//bonjour lisi