2012-01-03 97 views
7

这是我的问题:获取父对象

var greatapp = { 
    start : function(){ 
    $.AJAX({ 
     url : 'foo.com', 
     success : function(data){ 
     greatapp.say(data); 
     } 
    }) 
    }, 

    say : function(s){ 
    console.log(s); 
    } 
} 

我不喜欢这个例子是什么我通过定义对象的名称,而不是仅仅重复我在success功能自该事实this这显然不会工作,因为它在外部函数。

如何在JS对象中只有一次名字greatapp

+0

见http://stackoverflow.com/questions/183702/access-parents-parent-from-javascript-object – Ivan 2012-01-03 02:21:57

回答

10

一个常见的JavaScript成语是的this值保存到像meself的变量,并使用,在回调

这会起作用,因为回调访问的封闭声明的变量范围,换句话说回调将形成超过self封闭

var greatapp = { 
    start : function(){ 
    var self = this; 
    $.AJAX({ 
     url : 'foo.com', 
     success : function(data){ 
     self.say(data); 
     } 
    }) 
    }, 

    say : function(s){ 
    console.log(s); 
    } 
} 
+0

谢谢!它有效:) – Ryan 2012-01-03 02:51:36

+0

@Ryan - 我的荣幸 - 祝你好运 – 2012-01-03 02:54:08