call, apply, bind作用

时间:2023-03-08 18:45:19

call, apply作用就是(改变方法中的this指向)借用别人的方法来调用,就像调用自己的一样

 function Person(name) {
this.name = name;
}
Person.prototype.getName=function () {
return this.name;
}
function User ( name,password,age ) {
this.name = name;
this.password = password;
this.age = age;
} var user= new User('Bob',"123123",66);
alert(Person.prototype.getName.apply(user)); //"Bob"
user 通过alppy 借用Person原型中的方法getName
//call和apply用途一样,只是参数传递方式不一样

//call参数显式打散传递
//func.call(this, a, b, c, d); //apply参数作为一个数组传递
//func.apply(this, arguments);
//func.apply(this, [a, b, c, d]);

var fn2 = fn1.bind(this) 只改变this指向,不执行函数,返回值是一个函数;

     var obj={
name:'bo'
};
function fn1() {
console.log(this.name);
}
var fn2 = fn1.bind(obj);
fn2();//bo