расширенное использование параметров - PullRequest
1 голос
/ 26 июня 2009
//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)*);

сравнить коды

эль передается или нет? что происходит ???

Я хочу научиться использовать расширенные параметры.

Если не объявлять такие функции, как «имя функции (параметр1, параметр2, параметр3 ...)». Если не вызывать функции, такие как «имя (параметр1, параметр2, параметр3 ...)». Если параметры не являются переменными.

Если объявляются такие функции, как «функция (параметр1, параметр2, параметр3 ...)». При вызове функций типа «переменная (параметр1, параметр2, параметр3 ...)». Если параметры являются объектами.

Я заинтересован.

У вас, вероятно, есть закладка с уроками, в которых я заинтересован ... пожалуйста, поделитесь !!!

Ответы [ 3 ]

1 голос
/ 26 июня 2009

Значение, присвоенное «serializeFunction», на самом деле является анонимной функцией, вы можете видеть ее как указатель или ссылку на функцию, «el» - это просто объявленный входной параметр, который будет использоваться затем будет вызвана функция.

Глядя на исходный код того, который был опубликован, вызов функции sort.serialize получает только функцию в качестве параметра, "serializeFunction" не вызывается, она только передается в качестве аргумента.

Таким образом, функция сериализации, которая получает ссылку на функцию, переданную в качестве параметра, будет отвечать за ее внутреннее выполнение.

0 голосов
/ 26 июня 2009

Первый код, вероятно, правильный.

В JavaScript функции хранятся в переменных так же, как и любое другое значение (как вы видите в serializeFunction), и sort.serialize принимает только ссылку на serializeFunction. Затем serializeFunction вызывается из sort.serialize с текущим элементом (el).

Второй код отправит значение undefined в serializeFunction (поскольку el не определен в этой области), что приведет к ошибке. Даже если el было определено, sort.serialize ожидает ссылку на функцию, а не значение.

0 голосов
/ 26 июня 2009

Это лямбда-выражение типа.

sort.serialize()

принимает функцию в качестве параметра, а не значение.

...