首页 > 解决方案 > 如何使用 Javascript 在函数中访问全局变量?

问题描述

当我尝试在两个函数中访问全局变量时,我有疑问。一个函数是箭头函数,另一个函数是普通函数。箭头函数工作正常,但普通函数不能打印全局变量。为什么?

示例代码

class Data1{

    constructor(m1){
        this.m1 = m1
    }
}

class Data2 extends Data1{

    func1(){
        console.log(this.m1)
        this.m1 = 20
    }
    func2=()=>{
        console.log(this.m1)
        this.m1 = 40
    }


}

d1 = new Data1(10)
d2 = new Data2()
d2.func1()
d2.func2()

输出

undefined  
20

标签: javascripttypescriptjavascript-objectstypescript1.8

解决方案


在常规函数中,this 关键字表示调用函数的对象,可以是窗口、文档、按钮或其他任何东西。

对于箭头函数,this 关键字始终表示定义箭头函数的对象。

如果您在 Data1 中编写构造函数并将 func1 绑定到 Data1 对象,它将起作用。例如。

constructor(){
    this.func1 = this.func1.bind(this);
}

推荐阅读