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:是,但我想访问主类