Soru Neden jQuery'de “({})” kullanıyoruz?


Neden kullanıyoruz ({ })?

Temsilci mi?

Bu sözdizimini kullanmak ne anlama geliyor?

Ne ile uğraşıyoruz?

Örneğin:

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

76
2018-04-07 18:00


Menşei


stackoverflow.com/questions/1509535/javascript-false-and-false/... görünüşte alakasız bir soru, ancak bir şeye alakalı bir cevabı ile Mayıs ayı Açılmak. - Crescent Fresh


Cevaplar:


{} JavaScript'teki nesne gösterimi. Örneğin:

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

Bu durumda, ayarlarınızı içeren bir nesneyi eklentiye geçirirsiniz. Eklenti, bunun bir nesne olarak ele alınabilir.

settings.option1 //the option you passed in.

Tabii ki çok daha fazla kullanım var, ama bu jQuery'deki en yaygın örnek. Aynı şey için de geçerlidir .animate(), $.ajax(), .css() işlevler, vb. Özellikleri alan bir şey genellikle bu biçimi kullanır.


İstendiği gibi, diğer bazı örnekler:
Geçirilen nesnenin içindeki herhangi bir nesne, sadece özelliklerle değil, aynı zamanda bir işlev de olabilir:

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

Bu, bu girdinin odak olayının bir uyarıya sahip olmasını sağlar. Bir diğeri, bir nesneyi genişleterek, buna benzer özellikler ekliyor:

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

şimdi person var last_name özelliği. Bu, genellikle varsayılan ayarları almak için eklentiler tarafından kullanılır, ardından girdiğiniz tüm ayarları birleştirir, geri kalanlar için varsayılanları kullanarak, belirttiğiniz tüm ayarlarla üzerine yazabilirsiniz.

Neden kullanıyoruz?  Peki ... JavaScript bu şekilde çalışır ve jQuery ruhunda: bilgiyi iletmek için son derece esnek ve esnek bir yoldur.


156
2018-04-07 18:02



"Neden" demek, değişken bir argüman sayısını kolayca bir işleve iletmenizi sağlar. (Bu benim için en anlamlı olan ifadedir.) - Annika Backstrom
Çok iyi cevap, ama diğer kullanımlar hakkında bir örnek eklerseniz, çok çok iyi olacak. - uzay95
@ uzay95 - Başımın üst kısmından birkaç örnek daha ekledim, orada kullanım için çok fazla vaka var. - Nick Craver♦
Çok çok iyi bir cevap ... Çok şey öğrendim. Çok teşekkür ederim. - uzay95
Ayrıca bir göz atın json.org/js.html benzer sözdizimi için - RobertPitt


Demek istediğim, onu nasıl sarıyoruz?

Hayır. Bu, JavaScript nesne notasyonu (JSON). Örneğinizde, işlevi çağırıyorsunuz ajaxSetup özellikleri olan bir nesne ile:

error: fError,
compelete: fComp,
success: fSucc

Örneğin, yazabileceğiniz bir "kullanıcı" nesnesi oluşturmak için:

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

Ve sonra onun özelliklerinden birini kullanın:

alert( a.name );

Gösterir: Oscar

Orada gördüğünüz şey (kodunuzda) bir nesnenin yaratılması ve bir argüman olarak aktarılmasıdır.

Buna eşdeğer olacaktır:

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

$.ajaxSetup( setUpInfo );

10
2018-04-07 18:10



Aslında değil JSON, teklif edilecek üye isimleri gerektirir. Tabii ki, kesinlikle geçerli bir Javascript. Ayrıca, kullanıcı nesnesinin kullanması gerekir : yerine = - friedo
- sabit = ile: - OscarRyz
Javascript nesnesinin tam notasyonu, ancak JSON değil. Gibi json.org diyor ki - "JSON, JavaScript Programlama dilinin bir alt kümesine dayanıyor. JSON, tamamen bağımsız bir metin biçimidir, ancak C, C ++, C #, Java dahil C-ailesinin programcılarına aşina olan kuralları kullanır. JavaScript, Perl, Python ve diğerleri - Russ Cam


Bu bir JavaScript nesnesi değişmez veya Ajax üzerinden parametreler gönderilirken daha spesifik olarak JSON. JSON, JavaScript nesne değişmezlerinin alt kümesidir.

Örneğin:

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

Lütfen burada daha fazla bilgi edinin:


7
2018-04-07 18:02



+1 bir boş json yapısı btw - OscarRyz
“JSON” a göre, nesne değişmez sözdizimi ile yazılmış bir nesne olduğunu söylemek daha doğru olur. - Jimmy Cuadra
Bu bir JavaScript nesnesi hazırlayıcısıdır. JSON sözdizimine uymadığı için JSON değildir. alt küme JavaScript nesnesi literal sözdizimi). - Quentin


Soru "({})" notasyonu hakkındaydı.

Bu bağlamda, $ .ajaxSetup gibi bir ifadenin ardından parantez "(...)" ifadesi, çağrılacak ifadenin belirttiği işleve neden olur.

Parantez içindeki ifade (virgülle ayrılmış ifadeler listesi olabilir), işleve geçirilen argüman (lar) olan bir değer (veya değer listesi) ile sonuçlanır.

Son olarak, bir deyim bağlamında "{...}" kullanıldığında, belirtilen ad-değer özelliklerine sahip bir nesne oluşturur. Bu JSON gibidir, ancak daha genel olarak herhangi bir yasal JS nesnesi hazırlayıcısıdır.


6
2018-04-07 21:19





Bu bağlamda demek istiyorsan:

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

Sonra ( function() {}) anonim bir işlevdir. Ama bir örnek olmadan, ne demek istediğinden emin olamazsın.


4
2018-04-07 18:06



Bu temsilci işlevi gibi değil mi? - uzay95
simliar. anonim bir işlev, yeniden kullanmayı planlamamanız gereken bir "satır içi işlev" dir. Delegenin beklendiği her yerde anonim bir işlev kullanabilirsiniz. Bu yüzden burada çalışıyor. tıklama işlevi bir temsilci bekler (başka bir yerde işlevi yeniden kullanmayı planlıyorsanız veya bir işlev çok basit değilse bir temsilci işlevi kullanmış olursunuz) - Armstrongest