深入浅出:了解JavaScript中的call,apply,bind的差别
Posted 云上丶无忧
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入浅出:了解JavaScript中的call,apply,bind的差别相关的知识,希望对你有一定的参考价值。
在 javascript之 this 关键字详解文章中,谈及了如下内容,做一个简单的回顾:
1.this对象的涵义就是指向当前对象中的属性和方法。
2.this指向的可变性。当在全局作用域时,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: apply 方法 详解(转)——非常好
(转)深入浅出 妙用Javascript中applycallbind
深入学习JavaScript: apply call方法 详解(转)