【问题标题】:Straightforward Way to Extend Class in Node.js在 Node.js 中扩展类的简单方法
【发布时间】:2016-08-12 02:40:19
【问题描述】:

我正在将一个普通的 Javascript 类移动到 Node.js 中。在我使用的纯 Javascript 中:

class BlockMosaicStreamer extends MosaicStreamer{
}

我似乎找不到在 Node.js 中实现此功能的简单方法。在BlockMosaicStreamer.js 的节点项目中,我有:

'use strict'; 
function BlockMosaicStreamer(){
} 

如何扩展MosaicStreamer 中的./MosaicStreamer.js

'use strict'; 
function MosaicStreamer(){
} 

【问题讨论】:

  • @Bergi 你能详细说明一下吗?我需要添加util,然后使用util.inherits(BlockMosaicStreamer, MosaicStreamer) 获得所需的功能?
  • 是的,然后在BlockMosaicStreamer 构造函数中调用MosaicStreamer.call(this, …) "super"。
  • @Bergi 我不熟悉“超级”调用的工作方式。 ... 会取代什么?
  • 您想要传递给父构造函数的任何参数(可能没有)。只是 calling 新实例上的构造函数来初始化它 - 没有魔法。

标签: javascript node.js oop extending


【解决方案1】:

这取决于你如何定义你的第一堂课,我建议使用这样的:

class SomeClass {
}

module.exports = SomeClass

然后在你的扩展中:

const SomeClass = require('./dir/file.js')

class MyNewClass extends SomeClass {
}

module.exports = MyNewClass

【讨论】:

  • 但是,我的类的定义如问题中所示。在节点中使用class 会导致很多问题
  • @tibsar:然后使用转译器。今天应该没有什么能阻止你使用 ES6。
  • @tibsar,你可以更新 node.js,我使用的是 5.9.1,它工作得很好。
  • 完全没有办法按照我的方式去做吗?
  • @tibsar,这将比在 es6 中编写和转译或更新节点需要更多时间
猜你喜欢
  • 1970-01-01
  • 2013-05-24
  • 1970-01-01
  • 1970-01-01
  • 2017-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多