Почему мы используем ({ })
?
Это делегирование?
Что означает использовать этот синтаксис?
Что мы обертываем с ним?
Например:
$.ajaxSetup ({ // <-- THIS
error: fError,
compelete: fComp,
success: fSucc
}); // <-- AND THIS
Почему мы используем ({ })
?
Это делегирование?
Что означает использовать этот синтаксис?
Что мы обертываем с ним?
Например:
$.ajaxSetup ({ // <-- THIS
error: fError,
compelete: fComp,
success: fSucc
}); // <-- AND THIS
{}
- это обозначение объекта в JavaScript. Например:
$('selector').plugin({ option1: 'value' });
В этом случае вы передаете объект, содержащий ваши настройки, в плагин. Плагин может рассматривать это как объект, независимо от того, на что он ссылается, например:
settings.option1 //the option you passed in.
Конечно, у него гораздо больше применений, но это самый распространенный пример в jQuery. То же самое верно для .animate()
, $.ajax()
, .css()
и т.д. Все, что принимает свойства, обычно использует этот формат.
В соответствии с запросом, некоторые другие примеры:
Любой объект внутри переданного объекта может быть также функцией, а не только свойствами, например:
$("<input>", {
type: "text",
focusin: function() { alert("Hi, you focused me!"); }
});
Это установило бы фокусное событие этого входа для предупреждения. Другой - это расширение объекта, добавление к нему свойств, например:
var person = { first_name: "John" };
$.extend(person, { last_name: "Smith" });
//equivalent to:
person.last_name = "Smith";
//or:
person["last_name"] = "Smith";
Теперь person
имеет свойство last_name
. Это часто используется также плагинами, чтобы использовать настройки по умолчанию, затем объединить все параметры, которые вы передали, переписать с любыми параметрами, которые вы указали, используя значения по умолчанию для остальных.
Почему мы его используем? Хорошо... то, как работает JavaScript, и в стиле jQuery: это чрезвычайно точный и гибкий способ передачи информации.
Я имею в виду, что мы его обертываем?
Нет. Это обозначение объекта JavaScript (JSON). В вашем примере вы вызываете функцию ajaxSetup
с объектом, чьи свойства:
error: fError,
compelete: fComp,
success: fSucc
Например, чтобы создать "пользовательский" объект, который вы могли бы написать:
user = {
"name":"Oscar",
"lastName":"Reyes"
};
И затем используйте один из его атрибутов:
alert( a.name );
Показывает: Оскар
То, что вы видите там (в вашем коде), - это создание объекта и передача его в качестве аргумента.
Это будет эквивалентно:
var setUpInfo = {
"error": fError,
"compelete": fComp,
"success": fSucc
};
$.ajaxSetup( setUpInfo );
Это либо литерал объекта JavaScript, или, более конкретно, JSON, когда дело доходит до отправки параметров через Ajax. JSON - это подмножество литералов объектов JavaScript.
Например:
// This is JSON data sent via the Ajax request (JSON is subset of JavaScript object literals)
var json = {id: 1, first_name: "John", last_name: "Smith"};
// This is a JavaScript object literal, it is not used for transfer of data so doesn't need to be JSON
var jsol = {type: 'POST', url: url, data: json};
$.ajax(jsol);
Подробнее об этом читайте здесь:
Вопрос был о нотации "({})".
В этом контексте круглые скобки "(...)", следующие за выражением, такие как $.ajaxSetup, вызывают функцию, указанную выражением, которое вызывается.
Выражение внутри круглых скобок (которое может быть списком выражений, разделенных запятыми) приводит к значению (или списку значений), которое является аргументом (аргументами), переданным функции.
Наконец, когда "{...}" используется в контексте выражения, он создает объект с указанными свойствами имени. Это похоже на JSON, но это, в общем, любой законный JS-объект литерала.
Если вы имеете в виду в этом контексте:
$("#theId").click( function() { /* body here */ } );
Тогда ( function() {})
является анонимной функцией. Но без примера не может быть уверен, что вы имеете в виду.