理解js bind和this

  1. js中只有两大类数据类型,即基本数据类型(Number, String, Boolean, Null, undefine, symbol)和引用数据类型(Object)。Object可以用符号{}来表示,比如函数的函数体function(){}也是一个Object。所有的运行环境(context)本质上都是在一个Object的内部,而bind方法则是将一个函数绑定为一个Object的属性,也就是绑定到一个Object的context范围内。

  2. this指的是调用该方法的对象

    class A{
        constructor(){
            this.func = this.func.bind(this)
        }
        
        func(){
            ...
        }
    }
    

    在es6 class中,当我们在constructor中写this.func = this.func.bind(this)的时候,第一个this.func指向的是constructor的context,而调用constructor方法的就是class Object,简单来说:

    ? <- { this }

    this指的就是它前面和后面的这两个花括号所包含的范围的调用者

  3. 回调函数的this

    回调函数就是一个通过函数指针调用的函数。 如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。

    即,回调函数的this需要搞清楚是谁调用了它,this就指向谁

  4. 箭头函数没有自己的this,箭头函数中的this指的是它上上层{}的范围

    ? <- { ()=>{ this } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值