使用require / new实例化node.js中的新对象

时间:2018-08-04 19:11:13

标签: javascript node.js oop require

我使用node.js有一个非常简单的初学者问题,但是我似乎无法使其正常工作。

我想要做的就是能够使用index.js文件中的“ new”运算符创建对象。 出于演示目的,我在Person.js文件(与我的index.js位于同一目录)内创建了一个简单的Person对象,如下所示:

class Person {
  constructor() {
    this._name = 'bob';
  }

  set name(name) {
    this._name = name
  }

  get name() {
    return this._name;
  }  
}

现在我想做这样的事情(在index.js文件中):

var p = require('./Person.js')
var bob = new p.Person()

我收到的错误消息告诉我Person不是构造函数:

var bob = new p.Person()
      ^

TypeError: p.Person is not a constructor
at Object.<anonymous> (/home/.../index.js:59:11)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Function.Module.runMain (module.js:693:10)
at startup (bootstrap_node.js:188:16)
at bootstrap_node.js:609:3

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

如果要从另一个JS文件中请求或导入类/函数/对象/任何内容,则需要导出该文件并在当前文件中导入/要求该文件。这些称为模块。

在您的情况下,您需要在创建后导出Person类。否则JS没有任何引用。添加

module.exports = Person

Person类下面。现在您可以实例化

const Person = require('./person);
const p = new Person();

对于新的ES6类,您也可以使用import/export

// Export Person Class

export default class Person {
    ....
}

// Now, import
import Person from './person'