我正在尝试更好地理解 JavaScript 范围,但不确定为什么某些东西不起作用。
我已经定义了一个这样的对象:
var my_obj =
{
foo:function()
{
this.bar()
},
bar:function()
{
console.log('hello world!');
}
}
my_obj.foo();
但我收到错误“TypeError:this.bar is not a function”,我不明白为什么。
我也在尝试使用我之前在这个新块中编写的另一段代码,但这也不能正常工作。这里会发生以下情况:
var my_obj =
{
foo:function()
{
feedback('hello world!');
}
}
my_obj.foo();
feedback = function(msg,y)
{
if( !y )
{
setTimeout(function()
{
feedback(msg,1);
} , 1000 );
return;
}
else
{
console.log(msg);
}
}
这曾经可以正常工作(如果我从全局范围内调用了 feedback()),但是现在,从 foo 调用反馈很好,但是除非我从 setTimeout 中调用 window.feedback(),否则对反馈的超时调用会失败。
关于这些问题的任何想法?
谢谢
更新
这是我的代码(这将给出两个错误):http: //jsbin.com/ecotoj/12/edit
感谢 Asad 向我展示了在 $.ajax 中更改了“this”的上下文的问题(并且您可以在 $.ajax 中使用 jQuery 的上下文选项重新定义它)