call
call():第一参数 为改变this指向的对象,后面正常接受其他的参数。
var user1 = {
name: "hello",
age: 18,
fun: function(){
console.log(this.name,this.age);
}
};
var user2 = {
name: "js",
age: 20,
fun: function(){
console.log(this.name,this.age);
}
};
user1.fun.call(user2);
user2.fun.call(user1);
输出:js 20;hello 18
apply
apply():接受两个参数,第一个参数为改变this指向的对象,第二个参数为数组。
var user1 = {
name: "hello",
age: 18,
fun: function(a,b,c){
console.log(this.name,this.age);
console.log(a,b,c);
}
};
var user2 = {
name: "js",
age: 20,
};
user1.fun.apply(user2,[1,2,3]);
bind;
bind()和call()差不多,不过bind()返回的是一个函数,需要手动调用一下。
var user1 = {
name: "hello",
age: 18,
fun: function(){
console.log(this.name,this.age);
}
};
var user2 = {
name: "js",
age: 20,
fun: function(){
console.log(this.name,this.age);
}
};
user1.fun.bind(user2)();
user2.fun.bind(user1)();
输出:js 20;hello 18