2012-01-03 176 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