在前面的章节中,我们有讲到过关于 ES5 和 ES6 中 this 指向的问题,那么今天我们就来聊一下在JavaScript 中,如何利用 call, apply, bind 改变 this 指向的问题
A.call( B,x,y ):B是 this 要指向的对象,x 和 y 是A方法的参数。
function Teacher() {
this.name=‘teacher‘
}
function Student() {
this.name=‘student‘
}
Student.prototype.study=function () {
console.log(‘i am ‘+this.name);
}
var t=new Teacher();
var s=new Student();
s.study()
s.study.call(t) // 用 s 的方法调用(显示)t 的数据内容
打印结果如下:
现在我们给Fn student添加两个形数,再给 call 添加实参:
"链式"借用:
【总结】:call, apply, bind 异同
相同之处:
1、都是用来改变函数的this对象的指向的。
2、第一个参数都是this要指向的对象。
3、都可以利用后续参数传参。
2、第一个参数都是this要指向的对象。
3、都可以利用后续参数传参。
不同之处: