将变量方法添加到ES6类

时间:2017-07-21 05:07:16

标签: class syntax ecmascript-6

使用ES6 Class,您可以按如下方式声明方法:

class Foo {

  bar() {}

}

但是,我需要从外部文件导入方法并将它们加载到类中。像这样:

const barMethod = require('./bar');

class Foo {

  bar: barMethod

}

然而,这不起作用。我已经看了一会儿的语法,并没有真正提到它。这样做的正确方法是什么?

有没有办法扩展Class?由于Class太大了,我将其分解为多个文件用于组织目的,但每个方法都需要能够使用this引用类。

也许是Mixins?

2 个答案:

答案 0 :(得分:2)

ES6中的class仍然使用.prototype,因此您可以通过向`.prototype添加方法来扩展声明后的类定义。

原始声明:

class Foo {
  bar() {}
}

添加一些新方法:

Foo.prototype.newBar = someNewMethod;

或者,以更模块化的方式,也许您只想将Foo传递给它的模块构造函数中的每个模块,它只需将其方法添加到Foo.prototype

或者,每个模块都可以使用自己的一组方法定义自己的类(所有方法都设计为Foo方法,然后您可以使用一个主函数导入所有子定义并复制所有从每个导入的类到主Foo类原型的方法,最终得到一个主类。

请记住,方法只是原型对象上的函数,即使使用ES6 class语法声明类也是如此。可以使用常规Javascript将它们分配给其他对象,这些Javascript只对对象的属性进行操作。

答案 1 :(得分:0)

您可以从 [assembly: AssemblyTitle("This is my name Title")] 实例.call()媒体资源barMethod Foo,可选择将bar设置为thisthis实例< / p>

Foo