call, apply, bind -----【改变this指向的三大利器】

在前面的章节中,我们有讲到过关于 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 的数据内容

 打印结果如下:

call, apply, bind -----【改变this指向的三大利器】

 现在我们给Fn student添加两个形数,再给 call 添加实参:

 

 

"链式"借用:
 
 
【总结】:call, apply, bind 异同
 
相同之处:
1、都是用来改变函数的this对象的指向的。
2、第一个参数都是this要指向的对象。
3、都可以利用后续参数传参。
不同之处:
 
 
 

call, apply, bind -----【改变this指向的三大利器】

上一篇:mybatis报错:A query was run and no Result Maps were found for the Mapped Statement、、Property [login_ip] not found on type [com.thinkgem.jeesite.common.permission.entity.PremissUser]问题解决


下一篇:iOS创建安全的单例