Javascript 在类和构造函数中访问ES6/ES7静态类变量

Javascript 在类和构造函数中访问ES6/ES7静态类变量,javascript,ecmascript-6,static,ecmascript-2016,Javascript,Ecmascript 6,Static,Ecmascript 2016,我有一个很奇怪的问题: class AddOrSelectAddress { static allCountries = { AD: "Andorra", AE: "Vereinigte Arabische Emirate", AF: "Afghanistan", // ... }; constructor() { console.log('new'); console.lo

我有一个很奇怪的问题:

class AddOrSelectAddress {
    static allCountries = {
        AD: "Andorra",
        AE: "Vereinigte Arabische Emirate",
        AF: "Afghanistan",
        // ...
    };

    constructor() {
        console.log('new');
        console.log(this.allCountries); // prints "undefined"
    }
}

const myInstance = new AddOrSelectAddress();

为什么会这样?我希望,
this.allCountries
将包含那里的对象。

静态方法和属性可以通过类而不是通过这个关键字访问:

类地址选择地址{
静态所有国家={
广告:“安道尔”,
AE:“阿拉伯酋长国”,
AF:“阿富汗”,
// ...
};
构造函数(){
console.log('new');
console.log(AddOrSelectAddress.allCountries);
}
}

const myInstance=new AddOrSelectAddress()“使用非静态方法中的
this
关键字无法直接访问静态方法。您需要使用类名:
CLASSNAME.Static\u METHOD\u name()
或将该方法作为构造函数的属性调用:
this.constructor.Static\u METHOD\u name()
”()-这是针对方法的,但我想这也会计入属性。小尼特:这是一个属性,而不是一个方法(方法是属于函数的属性)。非常感谢。这就是解决办法。我能以某种方式使静态属性私有吗?@Andréreichlet
static#allCountries={…}将是静态和静态的private@Mos拉古兹尼非常感谢你!不过,这是非常“特殊”的语法。看来JS想变得特别花哨。