सवाल हम jQuery में "({})" का उपयोग क्यों कर रहे हैं?


हम क्यों उपयोग कर रहे हैं ({ })?

क्या यह प्रतिनिधि है?

इस वाक्यविन्यास का उपयोग करने का क्या अर्थ है?

हम इसके साथ क्या लपेट रहे हैं?

उदाहरण के लिए:

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

76
2018-04-07 18:00


मूल


stackoverflow.com/questions/1509535/javascript-false-and-false/... एक प्रतीत होता है अप्रासंगिक सवाल है, लेकिन एक चीज के प्रासंगिक जवाब के साथ हो सकता है पर जा रहे हो। - Crescent Fresh


जवाब:


{} जावास्क्रिप्ट में ऑब्जेक्ट नोटेशन है। उदाहरण के लिए:

$('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 संपत्ति। यह अक्सर प्लगइन द्वारा भी प्रयोग किया जाता है, डिफ़ॉल्ट सेटिंग्स लेने के लिए, फिर आपके द्वारा निर्दिष्ट किसी भी सेटिंग्स को विलय करें, आपके द्वारा निर्दिष्ट किसी भी सेटिंग के साथ ओवरराइटिंग, बाकी के लिए डिफ़ॉल्ट का उपयोग करके।

हम इसका इस्तेमाल क्यों कर रहे हैं?  खैर ... इस तरह जावास्क्रिप्ट काम करता है, और jQuery भावना में: यह जानकारी पास करने के लिए एक बेहद तेज़ और लचीला तरीका है।


156
2018-04-07 18:02



मैं कहूंगा कि "क्यों" यह आपको फ़ंक्शन में आसानी से तर्कों की एक चर संख्या को पारित करने की अनुमति देता है। (यह वाक्यांश है जो मुझे सबसे ज्यादा समझ में आता है।) - Annika Backstrom
बहुत अच्छा जवाब है, लेकिन यदि आप अन्य उपयोगों के बारे में कुछ उदाहरण जोड़ते हैं, तो यह बहुत अच्छा होगा। - uzay95
@ uzay95 - मेरे सिर के ऊपर से कुछ और उदाहरण जोड़े गए, वहां उपयोग के लिए बहुत सारे मामले हैं। - Nick Craver♦
बहुत बहुत अच्छा जवाब ... मैंने बहुत सी चीजें सीखी हैं। बहुत बहुत धन्यवाद। - uzay95
इसके अलावा एक नज़र डालें json.org/js.html समान वाक्यविन्यास के लिए - RobertPitt


मेरा मतलब है, हम इसे क्या लपेट रहे हैं?

नहीं। यह जावास्क्रिप्ट ऑब्जेक्ट नोटेशन (जेएसओएन) है। आपके उदाहरण में आप फ़ंक्शन का आह्वान कर रहे हैं 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 );

10
2018-04-07 18:10



यह वास्तव में है नहीं जेएसओएन, जिसके लिए सदस्य नामों को उद्धृत करने की आवश्यकता होती है। यह निश्चित रूप से पूरी तरह से मान्य जावास्क्रिप्ट है। साथ ही, आपके उपयोगकर्ता ऑब्जेक्ट का उपयोग करना चाहिए : के बजाय = - friedo
- निश्चित = के साथ: - OscarRyz
यह जावास्क्रिप्ट ऑब्जेक्ट शाब्दिक नोटेशन है लेकिन JSON नहीं है। जैसा json.org कहता है - "जेएसओएन जावास्क्रिप्ट प्रोग्रामिंग भाषा के सबसेट पर आधारित है। जेएसओएन एक टेक्स्ट प्रारूप है जो पूरी तरह से भाषा स्वतंत्र है लेकिन सी, सी ++, सी #, जावा सहित भाषाओं के सी-परिवार के प्रोग्रामर से परिचित सम्मेलनों का उपयोग करता है। जावास्क्रिप्ट, पर्ल, पायथन, और कई अन्य " - Russ Cam


यह या तो एक है जावास्क्रिप्ट ऑब्जेक्ट शाब्दिक या अधिक विशेष रूप से JSON जब यह अजाक्स पर पैरामीटर भेजने की बात आती है। JSON जावास्क्रिप्ट ऑब्जेक्ट अक्षर का सबसेट है।

उदाहरण के लिए:

// 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
2018-04-07 18:02



+1 ए खाली जेसन संरचना बीटीडब्ल्यू - OscarRyz
यह कहना अधिक सटीक होगा कि यह "जेएसओएन" की तुलना में ऑब्जेक्ट शाब्दिक वाक्यविन्यास के साथ लिखा गया एक ऑब्जेक्ट है। - Jimmy Cuadra
यह एक जावास्क्रिप्ट ऑब्जेक्ट शाब्दिक है। यह JSON नहीं है क्योंकि यह JSON वाक्यविन्यास के अनुरूप नहीं है (जो एक है सबसेट जावास्क्रिप्ट ऑब्जेक्ट का शाब्दिक वाक्यविन्यास)। - Quentin


सवाल नोटेशन के बारे में था "({})"।

इस संदर्भ में, $ .ajaxSetup जैसे अभिव्यक्ति के बाद "(...)" कोष्ठक, अभिव्यक्ति द्वारा निर्दिष्ट फ़ंक्शन का कारण बनता है।

कोष्ठक के अंदर अभिव्यक्ति (जो अभिव्यक्तियों की अल्पविराम से अलग सूची हो सकती है) परिणामस्वरूप मूल्य (या मानों की एक सूची) में होती है जो फ़ंक्शन को पास की गई तर्क (ओं) होती है।

अंत में, जब एक अभिव्यक्ति संदर्भ में "{...}" का प्रयोग किया जाता है, तो यह निर्दिष्ट ऑब्जेक्ट-गुण गुणों वाला ऑब्जेक्ट बनाता है। यह जेएसओएन की तरह है लेकिन यह आमतौर पर, किसी भी कानूनी जेएस वस्तु शब्दशः है।


6
2018-04-07 21:19





यदि आप इस संदर्भ में मतलब है:

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

फिर ( function() {}) एक अनाम कार्य है। लेकिन बिना किसी उदाहरण के, यह सुनिश्चित नहीं हो सकता कि आपका क्या मतलब है।


4
2018-04-07 18:06



यह प्रतिनिधि समारोह की तरह है ना? - uzay95
simliar। एक अनाम कार्य अनिवार्य रूप से एक "इनलाइन फ़ंक्शन" है जिसे आप पुन: उपयोग करने की योजना नहीं बनाते हैं। आप किसी अज्ञात फ़ंक्शन का उपयोग कहीं भी एक प्रतिनिधि की अपेक्षा कर सकते हैं। यही कारण है कि यह यहां काम करता है। क्लिक फ़ंक्शन एक प्रतिनिधि से अपेक्षा करता है (यदि आप कहीं और फ़ंक्शन का पुन: उपयोग करने की योजना बना रहे हैं तो आप एक प्रतिनिधि समारोह का उपयोग करेंगे या फ़ंक्शन वास्तव में सरल नहीं है) - Armstrongest