我可以从导入的 object 定义 ES6 静态方法吗?
Can I define an ES6 static method from an imported object?
如果我定义一些class:
class MyClass {
static myVar = { someKey: someVal };
...
}
但我不想从 class 中定义静态变量,而是想从另一个文件导入它:
// utils.js
export const someObject = { someKey: someVal };
...
这行得通吗?:
import { someObject } from './utils.js';
class MyClass {
static myVar = someObject;
...
}
编辑: 这个问题的标题更准确地说是:"Can I define an ES6 static field from an imported object?" 静态字段目前是 JS 的第 2 阶段提案。请参阅下面@T.J.Crowder 的回答。并需要 "babel-preset-stage-2" 转译器。
这不是静态方法,它是静态 field(这还不是标准;static fields 目前处于第 2 阶段,尽管转译作为基础知识的语法似乎不太可能改变)。
但是如果静态字段 是 标准化时的语义是它们当前所处的状态(如果不是,那将很奇怪),是的,您可以这样做。字段的初始值设定项可以是任何表达式,包括使用导入绑定的表达式。
如果你想现在就做,不转译或等待静态字段成为标准,只需在之后做赋值:
import { someObject } from './utils.js';
class MyClass {
// ...
}
MyClass.myVar = someObject;
如果我定义一些class:
class MyClass {
static myVar = { someKey: someVal };
...
}
但我不想从 class 中定义静态变量,而是想从另一个文件导入它:
// utils.js
export const someObject = { someKey: someVal };
...
这行得通吗?:
import { someObject } from './utils.js';
class MyClass {
static myVar = someObject;
...
}
编辑: 这个问题的标题更准确地说是:"Can I define an ES6 static field from an imported object?" 静态字段目前是 JS 的第 2 阶段提案。请参阅下面@T.J.Crowder 的回答。并需要 "babel-preset-stage-2" 转译器。
这不是静态方法,它是静态 field(这还不是标准;static fields 目前处于第 2 阶段,尽管转译作为基础知识的语法似乎不太可能改变)。
但是如果静态字段 是 标准化时的语义是它们当前所处的状态(如果不是,那将很奇怪),是的,您可以这样做。字段的初始值设定项可以是任何表达式,包括使用导入绑定的表达式。
如果你想现在就做,不转译或等待静态字段成为标准,只需在之后做赋值:
import { someObject } from './utils.js';
class MyClass {
// ...
}
MyClass.myVar = someObject;