代码之家  ›  专栏  ›  技术社区  ›  Bhojendra Rauniyar

如何在ES7中调用类内的方法?

  •  1
  • Bhojendra Rauniyar  · 技术社区  · 7 年前

    ES6简单示例

    class MyClass extends SuperClass {
      constructor() {
        super()
        this.myProperty = 'myProperty'
      }
    }
    

    在ES7中,前面的示例可以写成:

    class MyClass extends SuperClass {
      myProperty = 'myProperty'
    }
    

    import myMethod from './myMethod'
    class MyClass extends SuperClass {
      constructor() {
        super()
        myMethod()
      }
    }
    

    在ES7中,我们如何调用一个将被标记为构造函数的方法?

    import myMethod from './myMethod'
    class MyClass extends SuperClass {
      myMethod()
    }
    

    语法错误:意外的标记,应为{


    2 回复  |  直到 7 年前
        1
  •  1
  •   CertainPerformance    7 年前

    这是一个 不用编写构造器就可以实现这一点,但这不是您应该做的事情-类字段是指分配给 实例化的对象。如果它不是对象的属性,则应该在构造函数中完成。

    function myMethod() {
      console.log('method running');
    }
    
    class SuperClass { }
    class MyClass extends SuperClass {
      someIrrelevantPropName = (myMethod(), undefined)
    }
    const someInstantiation = new MyClass();

    注意,这实际上会分配 undefined someInstantiation.someIrrelevantPropName 'someIrrelevantPropName' in someInstantiation 将评估为 true ,因此此逗号运算符攻击并非没有副作用。

        2
  •  1
  •   Jayne Mast    7 年前

    您对这些属性的处理是 class fields declaration proposal

    该提案目前处于第3阶段,这意味着它还不是官方ECMAScript规范的一部分,但可能很快就会出台(可能在ES2019年?)。因此,我甚至建议不要使用示例中使用的类属性,因为它的语法仍然可能更改。

    推荐文章