node 的this作用域

class Parent{  
    private queueMap: Map<string, string> = new Map<string, string>();  
    private child : Child = new Child();  
    a () {  
        this.child.c(this.b);  
    }  
  
    b(){  
        console.log(this.queueMap);  
    }  
}  
  
class Child{  
    c(f : () => void){  
        f();  
  }  
}  
  
new Parent().a();

这是一段ts代码,可是为什么b()中的this为undefined呢,能不能在b()中获取到Parent对象呢?

阅读 2.2k
2 个回答

可以用

    a () {  
        this.child.c(this.b.bind(this));  
    }  

绑定 this

b函数是通过参数形式传给c并运行的,属于普通的函数运行情况,this 默认指向 window(浏览器),global(node)。
比较特殊的是 Class 类里默认采用严格模式,严格模式下 this 值默认是 undefined

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题