请仔细阅读代码
function Item()
{
this.state = 0;
}
Item.prototype.SendRequest = function()
{
//some request callback returns and calls GotResult
var that = this;
{
that.GotResult();//used 'that' because its inside another block
}
}
Item.prototype.GotResult = function()
{
//add to local db with callback which calls AddedToLocalDb
var that = this;
// Here is where the problem is
{
that.AddedToLocalDb();//..... ERROR
}
}
Item.prototype.AddedToLocalDb = function()
{
}
在“this.AddedToLocalDb()”上我得到了它的未定义。这是为什么?有任何想法吗? 在那个块'this'变量是未定义的。我犯了错误还是存在范围问题。任何帮助将不胜感激。
答案 0 :(得分:2)
当调用回调函数时,这可能是回调函数和this
值丢失的问题。但要确定,您必须显示涉及回调的实际代码。我们不仅需要查看方法定义,还需要查看使用这些方法的实际代码,以解决问题。
我怀疑这是你打电话并将GotResult
传递给的人。如果猜测正确,那么您可以通过this.GotResult.bind(this)
而不是仅仅传递this.GotResult
,这可能会解决您的问题。
这种类型的问题有时可以使用var that = this
技术解决,但只有在同一范围内使用本地函数时才有效,而不是在兄弟范围内定义的方法定义。