在调用bind的过程中本身不会执行函数,会返回函数 ,函数在调用call过程中本身会执行
function Person(name,age){
name ='周冬雨';
age= 18;
console.log(this.name);
console.log(this.age);
}
let obj={
name:"马冬梅",
age:19,
}
Person.call(obj,"周冬雨",18)
相信对于call我们已经很熟悉了,就是改变this指向,在调用call时候本身执行了Person这个方法。
下面看bind:
function Person(name,age){
name ='周冬雨';
age= 18;
console.log(this.name);
console.log(this.age);
}
let obj={
name:"马冬梅",
age:19,
}
let person= Person.bind(obj,"周冬雨",18)
我们发现什么都不会打印。
接着我们执行以下这个方法:
function Person(name,age){
name ='周冬雨';
age= 18;
console.log(this.name);
console.log(this.age);
}
let obj={
name:"马冬梅",
age:19,
}
let person= Person.bind(obj,"周冬雨",18)
person();
我们看到结果一样的,但真正输出结果是因为调用了person这个方法才有的,因为调用bind过程中不会执行方法,只会返回一个方法,然后再执行。这两句话加起来的效果和直接调用call的效果是一样的。