将参数传递给基于类的节点模块

时间:2016-04-02 07:58:35

标签: javascript node.js

我有这个Node.js模块结构:

class Foo {

  log() {
    console.log(this.bar); // should log 'hello'
  }
}

module.exports = new Foo;

我如何“要求”上述内容并传递'bar'作为参数?

以下是这些内容:

var Foo = require("./foo.js")("hello");

我对如何使用基于类的模块特别感兴趣。

更新:基于类的单身人士 Bad Idea™ 。我转而使用了object-literal模块结构。

2 个答案:

答案 0 :(得分:2)

您正在混合类和模块定义。您不导出实例。导出导入后实例化的定义。然后你必须调用一个函数

如果您正在使用ECMA2015课程,那么您可以写下:

export default class Foo {
  constructor(bar) {
    this._bar = bar; 
  }

  log() {
    console.log(this._bar);
  }
}

然后你的调用代码应如下所示:

import Foo from './foo.js';
let foo = new Foo('Boom!'); 
foo.log();

导入关键字与ES5中的require一样使用。

答案 1 :(得分:1)

您可以更改foo.js以导出类,而不是其实例,并添加一个构造函数,将第一个参数分配给this.bar

class Foo {
  constructor(bar) {
    this.bar = bar;
  }

  log() {
    console.log(this.bar); // should log 'hello'
  }
}

module.exports = Foo;

然后你可以这样使用它:

var foo = new (require("./foo.js"))("hello");
foo.log();