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

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

Это - делегат?

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

Что мы переносим с ним?

Например:

$.ajaxSetup ({ // <-- THIS
    error: fError,
    compelete: fComp,
    success: fSucc
}); // <-- AND THIS
77
задан Peter Mortensen 11 November 2011 в 09:52
поделиться

5 ответов

{} - объектная запись в 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: это чрезвычайно лаконичный и гибкий способ передачи информации.

158
ответ дан 24 November 2019 в 10:50
поделиться

Если в данном контексте вы имеете в виду:

$("#theId").click( function() { /* body here */ } );

Тогда (function () {}) является анонимной функцией. Но без примера не могу быть уверен, что вы имеете в виду.

4
ответ дан 24 November 2019 в 10:50
поделиться

Я имею в виду, что мы его заворачиваем?

Нет. Это нотация объектов JavaScript (JSON). В вашем примере вы вызываете функцию ajaxSetup с объектом, свойства которого:

error: fError,
compelete: fComp,
success: fSucc

Например, для создания объекта "user" вы можете написать:

user = { 
    "name":"Oscar", 
    "lastName":"Reyes"
};

А затем использовать один из его атрибутов:

alert( a.name );

Показывает: Oscar

То, что вы видите там (в своем коде), является созданием объекта и передачей его в качестве аргумента.

Это было бы эквивалентно:

var setUpInfo = {
    "error": fError,
    "compelete": fComp,
    "success": fSucc
};  

$.ajaxSetup( setUpInfo );
10
ответ дан 24 November 2019 в 10:50
поделиться

Вопрос касался записи "({})".

В этом контексте скобки «(...)» после выражения, такого как $ .ajaxSetup, вызывают вызов функции, указанной в выражении.

Выражение в круглых скобках (которое может быть списком выражений, разделенных запятыми) приводит к значению (или списку значений), которое является аргументом (ами), переданным функции.

Наконец, когда "{...}" используется в контексте выражения, он конструирует объект с указанными свойствами значения имени. Это похоже на JSON, но, в более общем смысле, это любой законный литерал объекта JS.

6
ответ дан 24 November 2019 в 10:50
поделиться

Это либо литерал объекта JavaScript , либо, более конкретно, JSON, когда дело доходит до отправки параметров через Аякс. 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);

Подробнее об этом читайте здесь:

7
ответ дан 24 November 2019 в 10:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: