代码之家  ›  专栏  ›  技术社区  ›  Drew2

我可以从导入的对象定义ES6静态方法吗?

  •  0
  • Drew2  · 技术社区  · 6 年前

    如果我定义某个类:

    class MyClass {
      static  myVar = { someKey: someVal };
    ...
    }
    

    但我想从另一个文件导入静态变量,而不是从类中定义静态变量:

    // utils.js
    export const someObject = { someKey: someVal };
    ...
    

    这能行吗?:

    import { someObject } from './utils.js';
    
    class MyClass {
      static  myVar = someObject;
    ...
    }
    

    编辑: 这个问题的标题更准确地说是:“我可以定义ES6静态 领域 从导入的对象?“静态字段目前是JS的第二阶段建议。请参见下文@T.J.Crowder的答案。并需要“babel-preset-stage-2”transpiler。

    1 回复  |  直到 6 年前
        1
  •  3
  •   T.J. Crowder    6 年前

    这不是静态方法,而是静态方法 领域 (尚未达到标准; static fields 目前正处于第2阶段,尽管将语法转换为 基础知识 似乎不太可能改变)。

    但提供了静态字段时的语义 是的,你可以做到。字段的初始值设定项可以是任何表达式,包括使用导入绑定的表达式。


    如果您想现在就执行此操作,而不需要传输或等待静态字段成为标准字段,只需在之后执行赋值:

    import { someObject } from './utils.js';
    
    class MyClass {
      // ...
    }
    MyClass.myVar = someObject;