Frage Warum verwenden wir "({})" in jQuery?


Warum benutzen wir? ({ })?

Ist es Delegierter?

Was bedeutet es, diese Syntax zu verwenden?

Was wickeln wir damit?

Beispielsweise:

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

76
2018-04-07 18:00


Ursprung


Antworten:


{} ist Objektnotation in JavaScript. Beispielsweise:

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

In diesem Fall übergeben Sie ein Objekt mit Ihren Einstellungen an das Plugin. Das Plugin kann dies als ein Objekt behandeln, wie auch immer es referenziert wird, zum Beispiel:

settings.option1 //the option you passed in.

Natürlich hat es viel mehr verwendet, aber das ist das häufigste Beispiel in jQuery. Das gleiche gilt für die .animate(), $.ajax(), .css() Funktionen usw. Alles, was Eigenschaften annimmt, verwendet normalerweise dieses Format.


Wie gewünscht, einige andere Beispiele:
Jedes Objekt innerhalb des übergebenen Objekts kann ebenfalls eine Funktion sein, nicht nur Eigenschaften, zum Beispiel:

$("<input>", {
  type: "text",
  focusin: function() { alert("Hi, you focused me!"); }
});    

Dies würde das Fokusereignis dieser Eingabe auf eine Warnung setzen. Ein anderer erweitert ein Objekt und fügt Eigenschaften wie folgt hinzu:

var person = { first_name: "John" };
$.extend(person, { last_name: "Smith" });
//equivalent to: 
person.last_name = "Smith";
//or:
person["last_name"] = "Smith";

Jetzt person hat die last_name Eigentum. Dies wird häufig auch von Plugins verwendet, um die Standardeinstellungen zu übernehmen, dann alle Einstellungen zusammenzuführen, die Sie übergeben haben, und mit den von Ihnen festgelegten Einstellungen zu überschreiben. Für den Rest werden Standardwerte verwendet.

Warum benutzen wir es?  Nun ... so funktioniert JavaScript und im jQuery-Geist: Es ist eine äußerst knappe und flexible Art, Informationen weiterzugeben.


156
2018-04-07 18:02



Ich meine, was wir es einwickeln?

Nein. Das ist JavaScript-Objektnotation (JSON). In Ihrem Beispiel rufen Sie die Funktion auf ajaxSetup mit einem Objekt, dessen Eigenschaften sind:

error: fError,
compelete: fComp,
success: fSucc

Um beispielsweise ein "Benutzer" -Objekt zu erstellen, könnten Sie schreiben:

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

Und dann verwende eines seiner Attribute:

alert( a.name );

Shows: Oscar

Was Sie dort sehen (in Ihrem Code), ist die Erstellung eines Objekts und die Übergabe als Argument.

Es wäre äquivalent zu:

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

$.ajaxSetup( setUpInfo );

10
2018-04-07 18:10



Es ist entweder ein JavaScript-Objektliteral oder genauer JSON, wenn es darum geht, Parameter über Ajax zu senden. JSON ist Teilmenge von JavaScript-Objektliteralen.

Beispielsweise:

// 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);

Bitte lesen Sie mehr darüber hier:


7
2018-04-07 18:02



Die Frage war die Notation "({})".

In diesem Kontext bewirkt die Klammerung "(...)" nach einem Ausdruck wie $ .ajaxSetup, dass die durch den Ausdruck angegebene Funktion aufgerufen wird.

Der Ausdruck innerhalb der Klammern (der eine durch Kommas getrennte Liste von Ausdrücken sein könnte) führt zu einem Wert (oder einer Liste von Werten), bei dem es sich um das Argument handelt, das an die Funktion übergeben wird.

Wenn schließlich "{...}" in einem Ausdruckskontext verwendet wird, erstellt es ein Objekt mit den angegebenen name-value-Eigenschaften. Dies ist wie JSON, aber allgemeiner ist es ein beliebiges JS-Objektliteral.


6
2018-04-07 21:19



Wenn Sie in diesem Zusammenhang meinen:

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

Dann ist die ( function() {}) ist eine anonyme Funktion. Aber ohne ein Beispiel, kann ich nicht sicher sein, dass du das meinst.


4
2018-04-07 18:06