1) कैसे पैरामीटर 1 (इंडेक्स) एक पूर्णांक होना करने के लिए पता है?
jQuery एक पूर्णांक पास करता है।
2) फ़ंक्शन को इंडेक्स बढ़ाने के लिए कैसे पता चलता है?
कॉलबैक index
में वृद्धि नहीं करता है, jQuery विधि करता है।
3) दूसरा पैरामीटर (पुराना वैल्यू) संपत्ति के पुराने मूल्य (संशोधन से पहले) को कैसे पकड़ता है?
jQuery इसे पास करता है।
सवालों 1-3 के जवाब शायद सबसे अच्छा एक समारोह है कि $.attr
को कुछ इसी तरह करता है के द्वारा समझा जाता है:
Array.prototype.each = function (f) {
var i;
for (i=0; i < this.length; ++i) {
f(i, this[i]);
}
};
['zero', 'one', 'two'].each(function (i,item) {console.log({i: item})});
f
एक कॉलबैक है। each
प्रत्येक संग्रह & आइटम के लिए संग्रह पर पुन: सक्रिय करने और f
पर कॉल करने के लिए ज़िम्मेदार है। एक ही कोड संरचना कार्यों के लिए इस्तेमाल किया जा सकता:
/* Map each item in a sequence to something else,
* returning a new sequence of the new values.
*/
Array.prototype.map = function (f) {
var i, result = [];
for (i=0; i < this.length; ++i) {
result[i] = f(i, this[i]);
}
return result;
};
['zero', 'one', 'two'].map(function(i,item) {return item.length});
// result: [4, 3, 3]
/* Return a sequence of the items from this sequence
* for which 'keep' returns true.
*/
Array.prototype.filter = function (keep) {
var i, result = [];
for (i=0; i < this.length; ++i) {
if (keep(i, this[i])) {
result.push(this[i]);
}
}
return result;
};
['zero', 'one', 'two'].filter(function(i,item) {return item.length <= 3});
// result: ['one', 'two']
mapconcat
का कार्यान्वयन foldl
and foldr
एक व्यायाम के रूप में छोड़ दिया। एक और अभ्यास के रूप में, each
के संदर्भ में map
और filter
को फिर से लिखें।
ध्यान दें कि ये फ़ंक्शंस केवल यह बताते हैं कि कॉलबैक कैसे काम करते हैं। वे उत्पादन कोड में समस्याएं पैदा कर सकते हैं।
4) क्या यह एक jQuery निर्माण है? एक JSON बात? यह बढ़ीया है। यह काम करता है, लेकिन ... यह "मूल्य कॉलबैक" चीज क्या है?
Callbacks एक सामान्य तकनीक है जो jQuery का व्यापक उपयोग करता है। वे functional programming की मुख्य विशेषता हैं, जहां फ़ंक्शन डेटा हैं जिन्हें अन्य डेटा प्रकारों की तरह संचालित किया जा सकता है। इस प्रकार, आपके पास ऐसे कार्य हैं जो तर्क के रूप में कार्य करते हैं और कार्य वापस कर सकते हैं। कुछ संदर्भों में, callbacks को "निरंतरता" के रूप में भी जाना जाता है और continuation passing style (CPS) का आधार बनता है। asynchronous function calls [2] के लिए यह विशेष रूप से महत्वपूर्ण है (जहां synchronous calls के विपरीत गणना के पहले फ़ंक्शन वापस आता है), जैसे कि अजाक्स अनुरोधों के लिए उपयोग किया जाता है। सीपीएस की कुछ शक्तियों को देखने के लिए, "Use continuations to develop complex Web applications" पढ़ें।
इसका दूसरा पहलू "मूल्य कॉलबैक" में "मान" है, क्योंकि जेएस गतिशील रूप से टाइप की गई भाषा है (प्रकार चर के बजाय डेटा से जुड़े होते हैं), औपचारिक पैरामीटर ऑब्जेक्ट्स के लिए बाध्य हो सकते हैं किसी भी तरह का। पारित होने के आधार पर एक फ़ंक्शन अलग-अलग व्यवहार कर सकता है। कभी-कभी यह तर्क के प्रकार की जांच करके कार्यान्वित किया जाता है, जो प्रभावी रूप से ad-hoc polymorphism (भाषा के बजाए फ़ंक्शन, प्रेषण को संभालना चाहिए)। हालांकि, parametric polymorphism या (उसमें विफल) duck typing हमेशा तर्क प्रकारों की जांच करने पर प्राथमिकता दी जानी चाहिए। पैरामैट्रिक पॉलिमॉर्फिज्म यह सुनिश्चित करके हासिल किया जाता है कि किसी दिए गए फ़ंक्शन को पारित किए जाने वाले सभी प्रकार एक ही इंटरफ़ेस (विधि नाम, तर्क, पूर्व शर्त, पोस्टकंडिशन &) का समर्थन करते हैं। उदाहरण के लिए, सभी अनुक्रम प्रकारों में length
संपत्ति होनी चाहिए और पूर्णांक द्वारा अनुक्रमित किया जाना चाहिए; जब तक वह धारण करता है, तब तक आप अपने स्वयं के अनुक्रम प्रकार का उपयोग कई कार्यों के साथ कर सकते हैं जो सरणी लेते हैं।
मुझे यकीन नहीं है कि जेएसओएन द्वारा आपका क्या मतलब है, लेकिन शायद यह आमतौर पर इसका मतलब नहीं है। जेएसओएन जेएस ऑब्जेक्ट शाब्दिक वाक्यविन्यास के सीमित संस्करण के आधार पर डेटा इंटरचेंज प्रारूप है। जेएसओएन नमूना कोड या उद्धृत पाठ में कहीं भी शामिल नहीं है।
ग्रेट ब्रेकडाउन। धन्यवाद! – sleeper
यहां तक कि बेहतर टूटना! मुझे ये अब मिला। तो यह पैटर्न बिल्कुल करीबी का उदाहरण नहीं है? – sleeper
करी का यह चर्चा अभी भी इतना नया है 2, यह मेरे सिर पर है।हालांकि, आपका ब्रेकडाउन पूरी तरह से मेरे प्रश्न में उठाए गए मुद्दों का उत्तर देता है और बताता है। तो मैंने आपके उत्तरों की अपनी पसंद को बदल दिया है। इस जवाब में आपके द्वारा किए गए सभी कार्यों के लिए धन्यवाद! – sleeper