使用Javascript在同一对象中引用函数

使用Javascript在同一对象中引用函数,javascript,object,Javascript,Object,我有一个JS对象,看起来是这样的: return { foo: function() { return this.bar(); }, bar: function() { return 1; } } 为什么我总是收到TypeError:this.bar不是FireBug中登录的函数?在同一对象中引用foo()中的bar()方法的正确方法是什么 更新 所以我发布了一个完整的代码。返回调用实际上是RequireJSdefine的一部分。如果需要进一步澄清,请告诉我。

我有一个JS对象,看起来是这样的:

return {
  foo: function() {
    return this.bar();
  },

  bar: function() {
    return 1;
  }
}
为什么我总是收到
TypeError:this.bar不是FireBug中登录的函数?在同一对象中引用
foo()
中的
bar()
方法的正确方法是什么

更新
所以我发布了一个完整的代码。返回调用实际上是RequireJS
define
的一部分。如果需要进一步澄清,请告诉我。

这取决于它的名称;例如,如果
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
)?你的意思是当你使用引用时?例如Do
jQuery(x)。在(“click”,theObject.foo)
上,使用
foo()中的
this
并且仍然引用正确的对象?不,我的意思是在对象本身内。是否有一个关键字替代了
这个
,以模拟我正在寻找的功能?不,没有这样的事情。您可以做一些看起来很熟悉的事情:将返回的对象命名为
self
,而不是
ret
,这样您就可以使用
re>打开self.bar();
。这仍然只是一个文字游戏,而不是您所要求的解决方案。请参阅使用
函数进行编辑。bind()
,但我怀疑它是否真的更好…您的答案非常有效。我只是好奇而已。谢谢老伙计!您知道一种强制引用绑定到同一对象的方法吗(有点像PHP中的
self
)?你的意思是当你使用引用时?例如do
jQuery(x)。在(“click”,theObject.foo)
上,在
foo()中使用
this
并且仍然引用正确的对象?不,我的意思是在对象本身内。是否有一个关键字替代了
这个
,以模拟我正在寻找的功能?不,没有这样的事情。您可以做一些看起来很熟悉的事情:将返回的对象命名为
self
,而不是
ret
,这样您就可以使用
re>打开self.bar();
。这仍然只是一个文字游戏,而不是您所要求的解决方案。请参阅使用
函数进行编辑。bind()
,但我怀疑它是否真的更好…您的答案非常有效。我只是好奇而已。谢谢老伙计!您知道一种强制引用绑定到同一对象的方法吗(有点像PHP中的
self
)?你的意思是当你使用引用时?例如do
jQuery(x)。在(“click”,theObject.foo)
上,在
foo()中使用
this
并且仍然引用正确的对象?不,我的意思是在对象本身内。是否有一个关键字替代了
这个
,以模拟我正在寻找的功能?不,没有这样的事情。您可以做一些看起来很熟悉的事情:将返回的对象命名为
self
,而不是
ret
,这样您就可以使用
re>打开self.bar();
。这仍然只是一个文字游戏,而不是您要求的解决方案。请参阅使用
函数进行编辑。bind()
,但我怀疑它是否真的更好…您的answ