【问题标题】:Is it possible to REassign a static class variable in Javascript from within a class instance?是否可以从类实例中重新分配 Javascript 中的静态类变量?
【发布时间】:2018-02-24 11:41:03
【问题描述】:

正如标题所示:是否有可能,如果可以,我可以重新从类实例中分配静态属性吗?

class MyClass {
  static myStaticString = 'Foo';

  modifyString() {
    myStaticString = 'Bar';
  }
}

const myInstance = new MyClass();
myInstance.modifyString();

console.log(myInstance.myStaticString); // Should print 'Bar'

【问题讨论】:

  • 它是一个静态变量,这意味着根据定义没有myInstance.myStaticString。使用MyClass.myStaticString = 'Bar';console.log(MyClass.myStaticString);
  • 除了@ChrisG 提到的注意,静态属性还不是javascript标准的一部分。 see this question.
  • 是的,我明白了。谢谢你的信息:)
  • 没有类变量。他们是财产!因此,您可以使用 MyClass.myStaticStringthis.myStaticString inside static methods 访问它们

标签: javascript static es6-class


【解决方案1】:

正如@sudavid4 提到的,静态属性尚不可用。相反,您可以尝试使用静态 getter/setter。

class MyClass {
  static get myStaticString(){
    return this.stringProp;
}

static set myStaticString(propval){
    this.stringProp = propval;
}    
}

然后修改数值

MyClass.myStaticString = "newstr";

【讨论】:

    猜你喜欢
    • 2016-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    相关资源
    最近更新 更多