JavaScript和NodeJS:从不同的JS文件调用方法
我正在使用NodeJS包含一个js文件到另一个。 下面我显示我的文件。 这两个类都包含两个对象的构造函数。 我想从ClassA中调用ClassB中的一个方法。 在ClassA中,我需要ClassB(如下所示),我试图创build一个新的B类实例,然后调用B类的方法获得以下错误:
cB.get(); ^ TypeError: Cannot call method 'get' of undefined at Object.<anonymous> (/home/---/ClassA.js:12:4)
//ClassA.js
var imported = require('./ClassB'); function ClassA() { //.... } var cA = new ClassA(); var cB = imported.ClassB(); cB.get();
//ClassB.js
function ClassB() { var myVar = 'test'; function _get () { return myVar; }; this.get = function () { return _get(); }; } exports.ClassB = ClassB;
我相信问题在于如何实例化类B的对象。有没有办法解决这个问题?
这是我的答案
ClassA的
var ClassB = require('./ClassB'); var cB = new ClassB("Test"); console.log(cB.get());
ClassB的:
function ClassB(myVar){ this.myvar = myVar; }; ClassB.prototype.get = function(){ return this.myvar; }; module.exports = ClassB;
CMD
$ node ClassA.js Test
ClassBV2
function ClassB(){ this.myvar = "Test"; };
如果你需要_get是私人的
function ClassB(){ this.myvar = "Test"; }; ClassB.prototype.get = function(){ return _get(); }; _get = function(){ return "Other"; } module.exports = ClassB;
如果你尝试使用它….
console.log(cB._get()); ^ TypeError: Object #<ClassB> has no method '_get'
创build实例时,您忘记了new
关键字。
你需要实例化一个构造函数
function ClassB() { var myVar = 'test'; function _get () { return myVar; }; this.get = function () { return _get(); }; } exports.ClassB = new ClassB();