Javascript ES6共享类变量

Sea*_*nch 4 javascript class ecmascript-6

我有一个看起来像这样的课程:

class Foo {
    constructor(arg1, arg2) {
        // ...

        this._some_obj = new SomeObj({
            param1: arg1,
            param2: arg2
        });
    }

    // ...
}

module.exports = Foo;
Run Code Online (Sandbox Code Playgroud)

现在我想做同样的事情,但是_some_obj在类的所有实例之间共享.

在搜索之后,我不清楚在ES6中这样做的正确方法.

Ber*_*rgi 5

从ES5中可以看出,您可以将它放在类的原型对象上:

export class Foo {
    constructor(arg1, arg2) {
        …
    }
    …
}
Foo.prototype._some_obj = new SomeObj({
    param1: val1,
    param2: val2
});
Run Code Online (Sandbox Code Playgroud)

或直接打开Foo,如果您不需要将其作为实例上的属性进行访问.


Tho*_*uiz 2

用于static具有类属性。

class MyClass {
  static myStaticProp = 42;

  constructor() {
    console.log(MyClass.myStaticProp); // Prints '42'
  }
}
Run Code Online (Sandbox Code Playgroud)

注意:这是Babel中已经实现的功能,但仍处于实验阶段,仅在第一个提案阶段。