我有以下代码块来存储对this
的正确引用。
我正在使用Mongoose Models.Image
。
class some {
public one() {
var self = this;
this.another(); //edited: this.another() is not a function
Models.Image.findById(id).then(function(data) {
self.another(); //self.another is not a function
....
});
}
public another() {
....
}
}
linter显示self
为this
但是当我执行它时,会给我错误。这里发生了什么?怎么解决?
该类是绑定表达路由的路由处理程序。
我想补充更多。在this.another()
内调用one()
(不回调)仍然会给我is not a function
错误。不知何故,this
没有引用该类。
可能是什么问题?
答案 0 :(得分:3)
已编辑:该类是绑定表达路由的路由处理程序。
问题可能在这里。
由于调用方法one
的方式,this
未绑定到类some
的实例。问题不在于回调。在one
的第一行,this
已经有错误的值:
var self = this; // self has a wrong value because this has a wrong value
答案 1 :(得分:-3)
另一个()应该在public one()中:
class some {
public one() {
var self = this;
Models.Image.findById(id).then(function(data) {
self.another(); //self.another is not a function
....
});
}
public another() {
....
}
}
也许这样更好:
class some {
public one() {
var self = this;
Models.Image.findById(id).then(function(data) {
self.another(); //self.another is not a function
....
});
another() {
....
}
}
}