Javascript ES6共享类变量

时间:2016-04-28 17:54:45

标签: javascript class ecmascript-6

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

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

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

    // ...
}

module.exports = Foo;

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

在搜索之后,我不清楚在ES6中执行此操作的正确方法。

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:1)

使用static来获得类属性。

class MyClass {
  static myStaticProp = 42;

  constructor() {
    console.log(MyClass.myStaticProp); // Prints '42'
  }
}

N.B:这是已在Babel中实施的功能,但仍在实验仅在第一个提案阶段。