共同点:
1.都有两个参数,第一个参数用于改变this指向,第二个是要传的具体数据
2.都用于改变当前对象的作用环境
不同点:1. bind()方法调用后的到的是函数,需要再调用一遍。且bind方法绑定this指向后,无法再通过call或apply进行修改。
2.call第二个参数需要一个个列出来,apply传递的是一个数组,bind与call传递的参数一样。
实例如下:
var obj1={
name:'tom'
};
var obj2={
name:"Jerry"
};
var name="易洋千玺"
function show(skill,type){
var res=this.name+" "+skill+" "+type;
console.log(res);
}
show.call(obj1,'dance','num111');
//tom dance num111
show.apply(obj2,['sing','num111']);
//Jerry sing num111
show.bind(obj2,"everything","num111")();
//Jerry everything num111
实例二:(且bind方法绑定this指向后,无法再通过call或apply进行修改。)
function $(name){
return document.querySelector(name);
}
var obj1={
name:'tom'
};
var obj2={
name:"Jerry"
};
var name="易洋千玺"
function show(skill,type){
var res=this.name+" "+skill+" "+type;
return res
}
var f=show.bind(obj2,"everything","num111")
f();
//"Jerry everything num111"
f.call(obj1,'dance','num111');
//"Jerry everything num111"