2010-10-26 65 views
1

我想了解下面的代碼塊,有點難倒..特別是我很困惑YAHOO.example.XHR_JSON =部分是關於什麼。看起來我們正在創建一個創建匿名方法的匿名方法?JavaScript中的語法function(){name = function(){}是什麼意思?

YAHOO.util.Event.addListener(window, "load", function() { 
    YAHOO.example.XHR_JSON = function() { (blah blah blah) }; 

如果我嘗試改變YAHOO.exmaple.XHR_JSON喜歡的東西FooBar的,我得到告訴foobar的是沒有定義。

任何幫助,一如既往不勝感激..

回答

1

XHR_JSON是隻是一個YAHOO.example對象的屬性。你可以給這個屬性分配任何東西,包括一個函數。

如果你嘗試了以下內容:

YAHOO.util.Event.addListener(window, "load", function() { 
    YAHOO.example.XHR_JSON = 'foobar'; 
}); 

..然後YAHOO.example.XHR_JSON最終會被設置爲'foobar',但load事件已解僱之後。這可能是爲什麼當您檢查該值時得到undefined

0

有兩個匿名函數。第一個設置YAHOO.example.XHR_JSON爲第二個匿名函數的值。這與定義命名函數不同。它只是將一個變量設置爲另一個函數的值。這是推遲執行的一種方式。也許第二個例子將有助於:

var lightFuse = function() { bomb.actionToTakeIn30Seconds = function() { beep(); explode(); } } 
0

這似乎是行產生

YAHOO.example.XHR_JSON = function() { (blah blah blah) }; 

這是對物業exampleYAHOO分配函數對象的屬性XHR_JSON混亂。

它可能已被分離出來,如下

var v1 = YAHOO.example 
v1.XHR_JSON = function() { (blah blah blah) }; 
0

聽起來像你剛纔需要首先定義FooBar ...?例如

var FooBar = function() { alert("Foo"); } 
var OtherFunction = function() { 
    this.myFunc = FooBar; 
} 
var instance = new OtherFunction(); 
instance.myFunc(); 
0
var foo = funvtion(){... code ...}; 

幾乎是一樣的

function foo() { ... code... }; 

代碼的主要思想是觸發頁的「load」事件後的XHR_JSON assignemnt完成所有DOM元素已建立。

相關問題