apply、call、bind区别、用法

来源:互联网 发布:代码行估算法 编辑:程序博客网 时间:2024/05/05 12:37
bind主要是为了改变函数内部的this指向

应用场景1:
1、事件绑定


  1. var logger = {  
  2.     x: 0,         
  3.     updateCount: function(){  
  4.         this.x++;  
  5.         console.log(this.x);  
  6.     }  
  7. }

  1. document.querySelector('button').addEventListener('click'function(){  
  2.     logger.updateCount();  
  3. });  

如何,这就是我之前说的,本来通常情况下处理函数都要用一层匿名函数包裹一下,才能维持处理函数本身的this.这里直接通过.bind(logger)人为的将其执行时的this指向logger对象。
.bind()创建了一个函数,当这个函数在被调用的时候,它的 this 关键词会被设置成被传入的值(这里指调用bind()时传入的参数)。



2、setTimeout.bind(对象)
把一个对象传入到sendtimeout对象里。settimeout里再使用this时,this就变成了这个对象。




具体区别 如下:
三者都是改变this的指向,
区别是bind不会立即执行,而call 与apply会立即执行


如果多次调用bind,那么多出来的次数都是无效的
0 0
原创粉丝点击