是否可以在 ES2015 中导入类方法

Ela*_*lad 6 javascript class ecmascript-6

我正在一个模块中创建一个方法:

export function myMethod() {}
Run Code Online (Sandbox Code Playgroud)

并在另一个模块中实例化一个类:

import {myMethod} from './methodFile';
class MyClass {
    constructor() {}
    myMethod // doesn't work
}
Run Code Online (Sandbox Code Playgroud)

是否可以myMethod作为MyClass课程的一部分使用?

我正在尝试创建以下代码的等效项:

class MyClass {
    constructor() {}
    myMethod() {}
}
Run Code Online (Sandbox Code Playgroud)

Ber*_*rgi 5

不,不可能在class声明中引用给定的值。

然而,class语法主要是语法糖,原型继承一​​如既往地工作。您可以简单地将方法放在类定义之后的原型对象上:

import {myMethod} from './methodFile';
class MyClass {
    …
}
MyClass.prototype.myMethod = myMethod;
Run Code Online (Sandbox Code Playgroud)

如果您的方法需要使用super,您将需要使用该.toMethod方法

  • @Phil 这是一个实现细节。关键是尽管语法不同,类并没有引入任何新概念,它们仍然只是带有原型对象的构造函数。 (2认同)