使用Javascript在同一对象中引用函数
我有一个JS对象,看起来是这样的:使用Javascript在同一对象中引用函数,javascript,object,Javascript,Object,我有一个JS对象,看起来是这样的: return { foo: function() { return this.bar(); }, bar: function() { return 1; } } 为什么我总是收到TypeError:this.bar不是FireBug中登录的函数?在同一对象中引用foo()中的bar()方法的正确方法是什么 更新 所以我发布了一个完整的代码。返回调用实际上是RequireJSdefine的一部分。如果需要进一步澄清,请告诉我。
return {
foo: function() {
return this.bar();
},
bar: function() {
return 1;
}
}
为什么我总是收到TypeError:this.bar不是FireBug中登录的函数?在同一对象中引用foo()
中的bar()
方法的正确方法是什么
更新
所以我发布了一个完整的代码。返回调用实际上是RequireJSdefine
的一部分。如果需要进一步澄清,请告诉我。这取决于它的名称;例如,如果theObject.foo
作为回调传递给另一个函数(例如jQuery(x)。在(“click”,theObject.foo)
上,此
上下文可能会丢失
执行bar
调用foo
的一种方法是关闭。更改将对象返回为的函数:
function thatReturnsTheOject() {
var ret = {
foo: function() {
return ret.bar(); // <---- Using `ret` not `this`
},
bar: function() {
return 1;
}
};
return ret;
}
返回项目()的函数{
变量ret={
foo:function(){
return ret.bar();//这取决于调用它的方式;例如,如果theObject.foo
作为回调传递给另一个函数(例如jQuery(x)。在(“click”,theObject.foo)
上,这个上下文可能会丢失
强制执行bar
调用foo
的一种方法是进行闭包。更改将对象返回为以下形式的函数:
function thatReturnsTheOject() {
var ret = {
foo: function() {
return ret.bar(); // <---- Using `ret` not `this`
},
bar: function() {
return 1;
}
};
return ret;
}
返回项目()的函数{
变量ret={
foo:function(){
return ret.bar();//这取决于调用它的方式;例如,如果theObject.foo
作为回调传递给另一个函数(例如jQuery(x)。在(“click”,theObject.foo)
上,这个上下文可能会丢失
强制执行bar
调用foo
的一种方法是进行闭包。更改将对象返回为以下形式的函数:
function thatReturnsTheOject() {
var ret = {
foo: function() {
return ret.bar(); // <---- Using `ret` not `this`
},
bar: function() {
return 1;
}
};
return ret;
}
返回项目()的函数{
变量ret={
foo:function(){
return ret.bar();//这取决于调用它的方式;例如,如果theObject.foo
作为回调传递给另一个函数(例如jQuery(x)。在(“click”,theObject.foo)
上,这个上下文可能会丢失
强制执行bar
调用foo
的一种方法是进行闭包。更改将对象返回为以下形式的函数:
function thatReturnsTheOject() {
var ret = {
foo: function() {
return ret.bar(); // <---- Using `ret` not `this`
},
bar: function() {
return 1;
}
};
return ret;
}
返回项目()的函数{
变量ret={
foo:function(){
返回返回返回条();//你能提供一个提琴吗?它在Chrome中工作。这个
取决于你如何调用它。你能发布更多的代码吗,比如包含这个返回的函数,以及你正在使用的调用调用?你能提供更多的示例代码吗?@Lean:done:你能提供一个提琴吗?它在Chrome中工作。这个
取决于您如何调用它。您能否发布更多的代码,即包含此返回的函数,以及您正在使用的调用?您能否提供更多的示例代码?@Lean:done:您能否提供一个提琴?它在Chrome中工作。此
取决于您如何调用它。您能否发布更多的代码,即函数wh在包含此返回和您正在使用的调用之前?您能提供更多示例代码吗?@Lean:done:您能提供一个小提琴吗?它在Chrome中工作。这取决于您如何调用它。您能发布更多的代码,即包含此返回的函数和您正在使用的调用吗?您能证明吗ide更多示例代码?@Lean:done:你知道一种强制引用绑定到同一对象的方法吗(有点像PHP中的self
)?你的意思是当你使用引用时?例如DojQuery(x)。在(“click”,theObject.foo)
上,使用foo()中的this
)
并且仍然引用正确的对象?不,我的意思是在对象本身内。是否有一个关键字替代了这个
,以模拟我正在寻找的功能?不,没有这样的事情。您可以做一些看起来很熟悉的事情:将返回的对象命名为self
,而不是ret
,这样您就可以使用re>打开self.bar();
。这仍然只是一个文字游戏,而不是您所要求的解决方案。请参阅使用函数进行编辑。bind()
,但我怀疑它是否真的更好…您的答案非常有效。我只是好奇而已。谢谢老伙计!您知道一种强制引用绑定到同一对象的方法吗(有点像PHP中的self
)?你的意思是当你使用引用时?例如dojQuery(x)。在(“click”,theObject.foo)
上,在foo()中使用this
并且仍然引用正确的对象?不,我的意思是在对象本身内。是否有一个关键字替代了这个
,以模拟我正在寻找的功能?不,没有这样的事情。您可以做一些看起来很熟悉的事情:将返回的对象命名为self
,而不是ret
,这样您就可以使用re>打开self.bar();
。这仍然只是一个文字游戏,而不是您所要求的解决方案。请参阅使用函数进行编辑。bind()
,但我怀疑它是否真的更好…您的答案非常有效。我只是好奇而已。谢谢老伙计!您知道一种强制引用绑定到同一对象的方法吗(有点像PHP中的self
)?你的意思是当你使用引用时?例如dojQuery(x)。在(“click”,theObject.foo)
上,在foo()中使用this
并且仍然引用正确的对象?不,我的意思是在对象本身内。是否有一个关键字替代了这个
,以模拟我正在寻找的功能?不,没有这样的事情。您可以做一些看起来很熟悉的事情:将返回的对象命名为self
,而不是ret
,这样您就可以使用re>打开self.bar();
。这仍然只是一个文字游戏,而不是您要求的解决方案。请参阅使用函数进行编辑。bind()
,但我怀疑它是否真的更好…您的answ