您的位置:首页 > Web前端 > JavaScript

javascript改变this指向之call、apply、bind

2020-06-28 04:54 120 查看
var obj1={
name:'obj1',
sendMsg:function(source,num){
console.log(num+':'+source+'更改了this指向现在的this是',this.name);
}
}

var obj2={
name:'obj2'
}

obj1.sendMsg.call(obj2,'obj1',1)
obj1.sendMsg.apply(obj2,['obj1',2])
obj1.sendMsg.bind(obj2,'obj1',3)()  // obj1.sendMsg.bind(obj2)('obj1',3)参数写这里也可以

联系:他们的第一个参数都是要指向的对象,第二个参数是要传递的参数
区别:

  1. call和apply直接调用函数,而bind返回的仍然是一个函数,需要对返回的函数再调用才行
  2. call和apply 的参数要放到数组里面

注:如果用的是箭头函数,用上面这三种方法都不会改变this的指向的

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: