Pertanyaan Mengapa kita menggunakan "({})" di jQuery?


Mengapa kami menggunakan ({ })?

Apakah itu delegasi?

Apa artinya menggunakan sintaks ini?

Apa yang kita bungkus dengan itu?

Sebagai contoh:

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

76
2018-04-07 18:00


asal


Jawaban:


{} adalah notasi objek dalam JavaScript. Sebagai contoh:

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

Dalam hal ini Anda mengirimkan objek yang berisi pengaturan Anda ke plugin. Plugin dapat menangani ini sebagai objek, apa pun yang dirujuk sebagai, misalnya:

settings.option1 //the option you passed in.

Tentu saja ini memiliki lebih banyak kegunaan, tetapi ini adalah contoh paling umum di jQuery. Hal yang sama berlaku untuk .animate(), $.ajax(), .css() fungsi, dll. Apa pun yang menggunakan properti umumnya menggunakan format ini.


Seperti yang diminta, beberapa contoh lain:
Setiap objek di dalam objek yang dilewati dapat berfungsi juga, bukan hanya properti, misalnya:

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

Ini akan mengatur acara fokus dari masukan itu untuk memiliki peringatan. Lainnya adalah memperluas objek, menambahkan properti ke dalamnya, seperti ini:

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

Sekarang person memiliki last_name milik. Ini juga sering digunakan oleh plugin, untuk mengambil pengaturan default, kemudian menggabungkan pengaturan yang Anda lewati, menimpa dengan pengaturan apa pun yang Anda tentukan, menggunakan default untuk sisanya.

Kenapa kita menggunakannya?  Nah ... begitulah cara kerja JavaScript, dan dalam semangat jQuery: ini adalah cara yang sangat singkat dan fleksibel untuk menyampaikan informasi.


156
2018-04-07 18:02



Maksudku, apa yang kita bungkus itu?

Tidak. Itu adalah notasi objek JavaScript (JSON). Dalam contoh Anda, Anda menjalankan fungsi tersebut ajaxSetup dengan objek yang sifatnya adalah:

error: fError,
compelete: fComp,
success: fSucc

Misalnya, untuk membuat objek "pengguna" yang dapat Anda tulis:

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

Dan kemudian gunakan salah satu atributnya:

alert( a.name );

Acara: Oscar

Apa yang Anda lihat di sana (dalam kode Anda) adalah penciptaan objek dan melewatkannya sebagai argumen.

Ini akan setara dengan:

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

$.ajaxSetup( setUpInfo );

10
2018-04-07 18:10



Itu baik a Literal objek JavaScript atau lebih spesifik lagi JSON dalam hal mengirimkan parameter melalui Ajax. JSON adalah bagian dari literal objek JavaScript.

Sebagai contoh:

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

Silakan baca lebih lanjut tentang ini di sini:


7
2018-04-07 18:02



Pertanyaannya adalah tentang notasi "({})".

Dalam konteks ini, tanda kurung "(...)" mengikuti ekspresi, seperti $ .ajaxSetup, menyebabkan fungsi yang ditentukan oleh ekspresi yang dipanggil.

Ekspresi di dalam tanda kurung (yang bisa berupa daftar ekspresi yang dipisahkan koma) menghasilkan nilai (atau daftar nilai) yang merupakan argumen yang diteruskan ke fungsi.

Akhirnya, ketika "{...}" digunakan dalam konteks ekspresi, ia membangun sebuah objek dengan properti nama-nilai yang ditentukan. Ini seperti JSON tetapi secara umum, objek JS legal apa pun.


6
2018-04-07 21:19



Jika yang Anda maksud dalam konteks ini:

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

Maka itu ( function() {}) adalah fungsi anonim. Tetapi tanpa contoh, tidak bisa yakin itu yang Anda maksud.


4
2018-04-07 18:06