深入浅出:了解JavaScript中的call,apply,bind的差别

Posted 云上丶无忧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入浅出:了解JavaScript中的call,apply,bind的差别相关的知识,希望对你有一定的参考价值。

 在 javascript之 this 关键字详解文章中,谈及了如下内容,做一个简单的回顾:  
      1.this对象的涵义就是指向当前对象中的属性和方法。
      2.this指向的可变性。当在全局作用域时,this指向全局;当在某个对象中使用this时,this指向该对象;当把某个对象的方法赋值给
      另外一个对象时,this会指向后一个对象。
      3.this的使用场合有:在全局环境中使用;在构造函数中使用,在对象的方法中使用。
      4.this的使用注意点,最重要的一点就是要避免多层嵌套使用this对象。
   

对this关键字有了稍稍了解便知道,this对象指向会经常改变的,这会造成一些意想不到的影响。JavaScript提供了call、apply、bind
      这三个方法,来切换/固定this的指向。

下面的主要划分:

1.call/apply/bind方法的来源
2.Function.prototype.call
3.Function.prototype.apply
3.1:找出数组中的最大数
3.2:将数组的空元素变为undefined
3.3:转换类似数组的对象
4.Function.prototype.bind
5.绑定回调函数的对象
6.call,apply,bind方法的联系和区别

 

 

1.call/apply/bind方法的来源 

  首先,在使用call,apply,bind方法时,我们有必要知道这三个方法究竟是来自哪里?为什么可以使用的到这三个方法? 

 call,apply,bind这三个方法其实都是继承自Function.prototype中的,属于实例方法。

console.log(Function.prototype.hasOwnProperty(‘call‘))//true

 

console.log(Function.prototype.hasOwnProperty(‘apply‘))//true

 

console.log(Function.prototype.hasOwnProperty(‘bind‘)) //true

 

111

以上是关于深入浅出:了解JavaScript中的call,apply,bind的差别的主要内容,如果未能解决你的问题,请参考以下文章

javascript中的call()和apply()的理解

深入学习JavaScript: apply 方法 详解(转)——非常好

(转)深入浅出 妙用Javascript中applycallbind

深入学习JavaScript: apply call方法 详解(转)

深入浅出妙用 Javascript 中 applycallbind

深入浅出 妙用Javascript中applycallbind