call()和apply()和bind()
call()和apply和bind()的共同点是都可以改变this的指向。
function Person(name,age,gender){//创造一个构造函数
this.name=name;
this.age=age;
this.gender=gender;
this.say=function(){
console.log('hi~');
}
}
//call()
function Student1(name,age,gender){
Person.call(this,name,age,gender);
}
let student=new Student1('Anny',18,'boy');
console.log(student);//Student
//apply()
function Student2(name,age,gender){
// Person.apply(this,[name,age,gender]);
Person.apply(this,arguments);
}
let student1=new Student2('Tong',20,'girl');
console.log(student1);//Student
//bind():返回的时候是一个函数,需要调用
function Student3(name,age,gender){
Person.bind(this,name,age,gender)()//使用bind方法后返回一个函数
}
let student2=new Student3('Tong',20,'girl');
console.log(student2);//Student

浙公网安备 33010602011771号