2009-06-26 22 views
1
//This is the function that will run every time a new item is added or the 
//list is sorted. 
var showNewOrder = function() { 
    //This function means we get serialize() to tell us the text of each 
    //element, instead of its ID, which is the default return. 
    var serializeFunction = function(el) { return el.get('text'); }; 
    //We pass our custom function to serialize(); 
    var orderTxt = sort.serialize(serializeFunction); 
    //And then we add that text to our page so everyone can see it. 
    $('data').set('text', orderTxt.join(' ')); 
}; 

完整的代碼在http://demos.mootools.net/Dynamic.Sortables先進的參數使用

var serializeFunction = function(*el*) { return el.get('text'); }; 
var orderTxt = sort.serialize(serializeFunction*(el)*); 

比較碼

是EL正在通過與否?到底是怎麼回事???

我想學習高級參數的用法。

如果沒有聲明「函數名稱(parameter1,parameter2,parameter3 ...)」等函數。 如果不調用「name(parameter1,parameter2,parameter3 ...)」等函數。 如果參數不是變量。

如果聲明像「function(parameter1,parameter2,parameter3 ...)」這樣的函數。 如果調用「變量(parameter1,parameter2,parameter3 ...)」等函數。 如果參數是對象。

我很感興趣。

你可能有一個書籤,我感興趣的課程...請分享!

回答

1

分配給「serializeFunction」實際上是一個匿名函數,你可以看到它像一個指針或引用函數的值,「厄爾尼諾」很簡單,就是將被使用,則該功能將是一個聲明輸入參數調用。

查看已發佈的函數original code,函數sort.serialize的調用僅接收函數作爲參數,「serializeFunction」未被調用,僅作爲參數傳遞。

因此,接收函數的引用作爲參數傳遞的序列化函數將負責在內部執行它。

+0

如果我不得不調用serializeFunction,我是否需要將el傳遞給它? – 2009-06-26 06:16:56

0

這是一個lambda表達式。

sort.serialize() 

接受功能作爲參數,而不是值。

0

第一個代碼可能是正確的。

在JavaScript中,函數與其他值一樣存儲在變量中(正如您在serializeFunction中看到的那樣),而sort.serialize僅引用serializeFunction。然後用sort.serialize與當前元素(el)調用serializeFunction

第二代碼將發送一個undefined值到serializeFunction(因爲el尚未在該範圍被定義),這將引發錯誤。即使el被定義,sort.serialize也需要引用一個函數,而不是一個值。