一、比较call、apply
都是定义在函数对象原型上,二者的作用都是改变函数的执行环境,第一个参数传入上下文执行环境,然后传入所需要的参数。
不同点:
call:第二个参数是单个参数
apply:第二个参数可以是数组
还可以实现继承
function Parent(name) {
this.name=name;
this.sayHello=function () {
console.log(name);
}
}
function Child(name) {
Parent.call(this,name);
}
var parent=new Parent("1");
var child=new Child('2');
parent.sayHello();
child.sayHello();
二、对比call、apply,bind只是起一个绑定执行上下文的作用
function ga() {
let x=1;
(function gb(y) {
return x+y;
}).bind(this); //使用bind将gb函数的执行上下文绑定到ga上
}
gb(2); //运行正常,得到3