Почему мы используем "{})" в jQuery?


почему мы используем ({ })?

это делегировать?

Что значит использовать этот синтаксис?

что мы обертываем с ним?

например:

$.ajaxSetup ({ // <-- THIS
    error: fError,
    compelete: fComp,
    success: fSucc
}); // <-- AND THIS
5 76

5 ответов:

{} - это обозначение объекта в JavaScript. Например:

$('selector').plugin({ option1: 'value' });

в этом случае вы передаете объект, содержащий настройки для плагина. Плагин может иметь дело с этим как с объектом, на что бы он ни ссылался, например:

settings.option1 //the option you passed in.

конечно, он имеет гораздо больше применений, но это наиболее распространенный пример в jQuery. То же самое верно и для .animate(),$.ajax(),.css() функции, etc. Все, что принимает свойства обычно использует этот формат.


как и просили, некоторые другие примеры:
Любой объект внутри переданного объекта также может быть функцией, а не только свойствами, например:

$("<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 object notation (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 );

это либо a JavaScript object literal или более конкретно 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() {}) является анонимной функцией. Но без примера, не могу быть уверен, что это то, что вы имеете в виду.