JavaScript和NodeJS:从不同的JS文件调用方法
我使用NodeJS将一个js文件包含到另一个js文件中。下面我展示了我的两个文件。这两个类都包含两个对象的构造函数。我想从ClassA调用ClassB中的一个方法。在ClassA中,我需要ClassB(如下所示),我试图创建一个新的B类实例,并调用它类B的方法get。我得到以下错误:JavaScript和NodeJS:从不同的JS文件调用方法,javascript,node.js,oop,methods,Javascript,Node.js,Oop,Methods,我使用NodeJS将一个js文件包含到另一个js文件中。下面我展示了我的两个文件。这两个类都包含两个对象的构造函数。我想从ClassA调用ClassB中的一个方法。在ClassA中,我需要ClassB(如下所示),我试图创建一个新的B类实例,并调用它类B的方法get。我得到以下错误: cB.get(); ^ TypeError: Cannot call method 'get' of undefined at Object.<anonymous> (/home/---/
cB.get();
^
TypeError: Cannot call method 'get' of undefined
at Object.<anonymous> (/home/---/ClassA.js:12:4)
//ClassB.js
function ClassB()
{
var myVar = 'test';
function _get ()
{
return myVar;
};
this.get = function ()
{
return _get();
};
}
exports.ClassB = ClassB;
我相信问题在于如何实例化类B的对象。有没有办法解决这个问题?在创建实例时,您忘记了
new
关键字。您需要实例化一个构造函数
function ClassB()
{
var myVar = 'test';
function _get ()
{
return myVar;
};
this.get = function ()
{
return _get();
};
}
exports.ClassB = new ClassB();
这是我的答案
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";
};
如果需要,请保持隐私
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'
console.log(cB.\u get());
^
TypeError:对象#没有方法“_get”
如果我这样做,那么如何从类A调用构造函数?好的,我可以这样做:var cB=imported.ClassB;而且看起来很好一旦你实例化了新的ClassB(),你应该能够利用导出的ClassB。我需要_get函数是私有的,get是私有的,所以在这种情况下我不能使用prototype OK updated以满足你的需要仅供参考。我继续使用你想要的任何方式。这种方式更干净。公认的答案
console.log(cB._get());
^
TypeError: Object #<ClassB> has no method '_get'