Javascript 从另一个类内部调用方法

Javascript 从另一个类内部调用方法,javascript,node.js,Javascript,Node.js,我有这样一个节点类: var Classes = function () { }; Classes.prototype.methodOne = function () { //do something }; 当我想调用methodOne时,我使用以下方法: this. methodOne(); 它是有效的。但是现在我必须从另一个类的另一个方法内部调用它。这一次它不起作用,无法访问methodOne: var mongoose = new Mongoose(); mongoose.s

我有这样一个节点类:

var Classes = function () {
};

Classes.prototype.methodOne = function () {
    //do something
};
当我想调用
methodOne
时,我使用以下方法:

this. methodOne();
它是有效的。但是现在我必须从另一个类的另一个方法内部调用它。这一次它不起作用,无法访问
methodOne

var mongoose = new Mongoose();
mongoose.save(function (err, coll) {
  //save to database
  this. methodOne(); //this does not work
}

我怎么能叫methodOne?我使用了
Classes.methodOne()
,但它不起作用

这个
保存
回调中位于新上下文中,与外部的
不同。将其保存在可访问
methodOne

var that = this;
mongoose.save(function (err, coll) {
  //save to database
  that.methodOne();
}

您需要在mongoose函数之外创建变量

var self = this;

var mongoose = new Mongoose();
mongoose.save(function (err, coll) {
  //save to database
  self.methodOne(); //If you call `this` from here, This will refer to `mongoose` class
}
如果您所在的环境使用ES6,则可以使用

var mongoose = new Mongoose();
mongoose.save((err, col) => {
    //save to database
    this.methodOne();
})

您可以做的是在另一个类中创建一个类类的对象,并使用以下对象引用该方法:Ex:

var objClasses;
var mongoose = new Mongoose();
mongoose.save(function (err, coll) {
  //save to database
objClasses = new Classes();
  objClasses. methodOne(); //this should work
}

如果它不起作用,请解释你到底想要实现什么

这是指猫鼬Class@wZVanG:是,但我想访问主类