\\\";const output = safeHTML`User said: ${userInput}`;console.log(output); // User said:

पेशेवर:

दोष:


5. वीकमैप्स और वीकसेट्स

वीकमैप्स और वीकसेट्स क्या हैं?

वीकमैप्स कुंजी-मूल्य जोड़े का संग्रह है जहां कुंजियाँ कमजोर रूप से संदर्भित होती हैं। इसका मतलब यह है कि यदि कुंजी का कोई अन्य संदर्भ मौजूद नहीं है, तो प्रविष्टि कचरा एकत्रित है।

समस्या: आप एक कैशिंग सिस्टम का निर्माण कर रहे हैं, और आप यह सुनिश्चित करना चाहते हैं कि एक बार जब ऑब्जेक्ट की आवश्यकता नहीं रह जाती है, तो मेमोरी खाली करने के लिए वे स्वचालित रूप से कचरा एकत्र कर लेते हैं।

उदाहरण:

let user = { name: \\\"Alice\\\" };const weakCache = new WeakMap();weakCache.set(user, \\\"Cached data\\\");console.log(weakCache.get(user)); // Cached datauser = null; // The entry in weakCache will be garbage collected

पेशेवर:

दोष:


6. करींग

करीइंग क्या है?

Currying एक फ़ंक्शन को रूपांतरित करता है जो कई तर्कों को कार्यों के अनुक्रम में लेता है जिनमें से प्रत्येक एक ही तर्क लेता है। यह एक कार्यात्मक प्रोग्रामिंग तकनीक है जो कोड लचीलेपन को बढ़ा सकती है।

समस्या: मान लें कि आपके पास एक फ़ंक्शन है जो प्रतिशत के आधार पर छूट लागू करता है। आप अपने पूरे ऐप में अलग-अलग प्रतिशत के साथ इस फ़ंक्शन का पुन: उपयोग करना चाहते हैं।

उदाहरण:

const applyDiscount = (discount) => (price) => price - price * (discount / 100);const tenPercentOff = applyDiscount(10);const twentyPercentOff = applyDiscount(20);console.log(tenPercentOff(100)); // 90console.log(twentyPercentOff(100)); // 80

पेशेवर:

दोष:


निष्कर्ष

इन उन्नत जावास्क्रिप्ट अवधारणाओं में से प्रत्येक - प्रॉक्सी, प्रतीक, जेनरेटर, टैग किए गए टेम्पलेट लिटरल्स, वीकमैप्स और करीइंग - विशिष्ट समस्याओं को अधिक कुशल, स्केलेबल या सुरुचिपूर्ण तरीकों से हल करने के लिए अद्वितीय क्षमताएं प्रदान करता है। हालाँकि, वे ट्रेड-ऑफ़ के साथ आते हैं, जैसे बढ़ी हुई जटिलता या संभावित प्रदर्शन समस्याएँ।

मुख्य उपाय यह है कि समझें कि इन अवधारणाओं का उपयोग कब और कहां करना है। सिर्फ इसलिए कि वे मौजूद हैं इसका मतलब यह नहीं है कि आपको उन्हें हर प्रोजेक्ट में उपयोग करना चाहिए। इसके बजाय, उन्हें तब शामिल करें जब वे स्पष्ट लाभ प्रदान करते हैं, जैसे कोड पठनीयता, प्रदर्शन या लचीलेपन में सुधार।

इन उन्नत तकनीकों की खोज करके, आप अधिक परिष्कृत समस्याओं से निपटने और अधिक शक्तिशाली जावास्क्रिप्ट लिखने में सक्षम होंगे।

","image":"http://www.luping.net/uploads/20241006/172821096567026815e7a06.jpg","datePublished":"2024-11-08T12:01:22+08:00","dateModified":"2024-11-08T12:01:22+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > उन्नत जावास्क्रिप्ट अवधारणाएँ प्रत्येक डेवलपर को पता होनी चाहिए

उन्नत जावास्क्रिप्ट अवधारणाएँ प्रत्येक डेवलपर को पता होनी चाहिए

2024-11-08 को प्रकाशित
ब्राउज़ करें:226

Advanced JavaScript Concepts Every Developer Should Know

जावास्क्रिप्ट एक ऐसी भाषा है जिसे कई डेवलपर्स दैनिक उपयोग करते हैं, लेकिन इसके पारिस्थितिकी तंत्र के भीतर कई छिपे हुए रत्न हैं जिनसे अनुभवी डेवलपर्स भी परिचित नहीं हो सकते हैं। यह आलेख कुछ कम-ज्ञात जावास्क्रिप्ट अवधारणाओं की पड़ताल करता है जो आपके प्रोग्रामिंग कौशल को महत्वपूर्ण रूप से बढ़ा सकते हैं। हम प्रॉक्सी, प्रतीक, जेनरेटर जैसी अवधारणाओं को कवर करेंगे, प्रत्येक को उदाहरणों के साथ प्रदर्शित करेंगे और उनकी शक्ति को दर्शाने के लिए समस्याओं को हल करेंगे।

अंत तक, आपको जावास्क्रिप्ट की गहरी समझ हो जाएगी और आप जान जाएंगे कि इन उन्नत सुविधाओं का उपयोग कब (और कब नहीं) करना है।


1. प्रॉक्सी

प्रॉक्सी क्या हैं?

जावास्क्रिप्ट में एक प्रॉक्सी आपको प्रॉपर्टी लुकअप, असाइनमेंट और फ़ंक्शन इनवोकेशन जैसे बुनियादी संचालन को रोकने और अनुकूलित करने की अनुमति देता है।

समस्या: कल्पना कीजिए कि आप एक ऐसी प्रणाली बना रहे हैं जहां उपयोगकर्ताओं के पास ऐसी वस्तुएं हैं जो उनके कार्यों को ट्रैक करती हैं। प्रॉपर्टी एक्सेस को ट्रैक करने के लिए अपने ऐप के हर हिस्से को संशोधित करने के बजाय, आप इन क्रियाओं को रोकने और लॉग करने के लिए प्रॉक्सी का उपयोग कर सकते हैं।

उदाहरण:

const user = {
  name: "Alice",
  age: 25
};

const handler = {
  get(target, prop) {
    console.log(`Property '${prop}' was accessed`);
    return prop in target ? target[prop] : `Property ${prop} doesn't exist`;
  },
};

const userProxy = new Proxy(user, handler);

console.log(userProxy.name); // Logs: Property 'name' was accessed, Returns: Alice
console.log(userProxy.address); // Logs: Property 'address' was accessed, Returns: Property address doesn't exist

पेशेवर:

  • आपको किसी ऑब्जेक्ट के साथ लगभग किसी भी इंटरैक्शन को संभालने और इंटरसेप्ट करने की अनुमति देता है।
  • लॉगिंग, सत्यापन और गतिशील व्यवहार के लिए बढ़िया।

दोष:

  • अत्यधिक उपयोग किए जाने पर ओवरहेड प्रदर्शन का परिचय दे सकता है।
  • आपके तर्क और वस्तु व्यवहार के बीच अमूर्त परत के कारण डीबग करना कठिन है।

2. प्रतीक

प्रतीक क्या हैं?

प्रतीक ES6 में पेश किया गया एक नया आदिम प्रकार है। वे ऑब्जेक्ट गुणों के लिए अद्वितीय कुंजियाँ प्रदान करते हैं, जो उन्हें तब उपयोगी बनाती हैं जब आपको संपत्ति के नाम के टकराव से बचने की आवश्यकता होती है।

समस्या: मान लीजिए कि आप एक ऐसी वस्तु पर काम कर रहे हैं जो तृतीय-पक्ष कोड के साथ एकीकृत है, और आप उनकी कुंजियों को अधिलेखित किए बिना कस्टम गुण जोड़ना चाहते हैं।

उदाहरण:

const uniqueId = Symbol('id');
const user = {
  [uniqueId]: 123,
  name: "Alice"
};

console.log(user[uniqueId]); // 123
console.log(Object.keys(user)); // ['name'] - Symbol key is hidden from iteration

पेशेवर:

  • प्रतीक अद्वितीय हैं, भले ही उनका विवरण समान हो।
  • आकस्मिक संपत्ति को ओवरराइट होने से रोकता है, जिससे वे पुस्तकालयों या एपीआई डिज़ाइन में उपयोग के लिए आदर्श बन जाते हैं।

दोष:

  • प्रतीक गणना योग्य नहीं हैं, जो डिबगिंग या पुनरावृत्ति को थोड़ा पेचीदा बना सकता है।
  • अति प्रयोग करने पर कोड की पठनीयता कम हो सकती है।

3. जनरेटर कार्य

जेनरेटर क्या हैं?

जेनरेटर ऐसे फ़ंक्शन हैं जिन्हें रोका और फिर से शुरू किया जा सकता है, जो उन्हें एसिंक प्रवाह को प्रबंधित करने या मांग पर डेटा उत्पन्न करने के लिए उपयोगी बनाता है।

समस्या: मान लीजिए आप फाइबोनैचि संख्याओं का एक क्रम उत्पन्न करना चाहते हैं। पूरे अनुक्रम को सामने से उत्पन्न करने के बजाय, आप एक जनरेटर बना सकते हैं जो एक-एक करके मान उत्पन्न करता है, जिससे आलसी मूल्यांकन की अनुमति मिलती है।

उदाहरण:

function* fibonacci() {
  let a = 0, b = 1;
  while (true) {
    yield a;
    [a, b] = [b, a   b];
  }
}

const fib = fibonacci();

console.log(fib.next().value); // 0
console.log(fib.next().value); // 1
console.log(fib.next().value); // 1
console.log(fib.next().value); // 2

पेशेवर:

  • ऐसे अनुक्रम उत्पन्न करने के लिए कुशल जहां आपको एक समय में केवल कुछ मानों की आवश्यकता होती है।
  • यील्ड के साथ उपयोग करने पर स्वच्छ एसिंक प्रवाह की अनुमति देता है।

दोष:

  • आमतौर पर प्रॉमिस या एसिंक्स/वेट के रूप में उपयोग नहीं किया जाता है, इसलिए उनके पास सीखने की अवस्था तेज होती है।
  • अत्यधिक उपयोग करने पर कोड जटिल हो सकता है।

4. टैग किए गए टेम्प्लेट लिटरल्स

टैग किए गए टेम्प्लेट लिटरल्स क्या हैं?

टैग किए गए टेम्प्लेट आपको एक फ़ंक्शन के साथ टेम्प्लेट शाब्दिक को संसाधित करने की अनुमति देते हैं, जिससे वे सीएसएस-इन-जेएस लाइब्रेरी जैसे डीएसएल (डोमेन-विशिष्ट भाषाएं) बनाने के लिए अविश्वसनीय रूप से शक्तिशाली बन जाते हैं।

समस्या: आपको एक टेम्पलेट सिस्टम बनाने की आवश्यकता है जो उपयोगकर्ता इनपुट को संसाधित करता है और XSS हमलों से बचने के लिए इसे साफ करता है।

उदाहरण:

function safeHTML(strings, ...values) {
  return strings.reduce((acc, str, i) => acc   str   (values[i] ? escapeHTML(values[i]) : ''), '');
}

function escapeHTML(str) {
  return str.replace(/&/g, "&").replace(/, "<").replace(/>/g, ">");
}

const userInput = "";
const output = safeHTML`User said: ${userInput}`;
console.log(output); // User said: <script>alert('XSS')</script>

पेशेवर:

  • स्ट्रिंग इंटरपोलेशन पर अच्छे नियंत्रण की अनुमति देता है।
  • उन पुस्तकालयों के निर्माण के लिए बढ़िया है जिनके लिए स्ट्रिंग पार्सिंग या परिवर्तन की आवश्यकता होती है (उदाहरण के लिए, सीएसएस, एसक्यूएल क्वेरीज़)।

दोष:

  • जब तक विशिष्ट पुस्तकालयों के साथ काम नहीं किया जाता या अपना स्वयं का पुस्तकालय नहीं बनाया जाता, तब तक इसकी आमतौर पर आवश्यकता नहीं होती।
  • शुरुआती लोगों के लिए समझना और डिबग करना मुश्किल हो सकता है।

5. वीकमैप्स और वीकसेट्स

वीकमैप्स और वीकसेट्स क्या हैं?

वीकमैप्स कुंजी-मूल्य जोड़े का संग्रह है जहां कुंजियाँ कमजोर रूप से संदर्भित होती हैं। इसका मतलब यह है कि यदि कुंजी का कोई अन्य संदर्भ मौजूद नहीं है, तो प्रविष्टि कचरा एकत्रित है।

समस्या: आप एक कैशिंग सिस्टम का निर्माण कर रहे हैं, और आप यह सुनिश्चित करना चाहते हैं कि एक बार जब ऑब्जेक्ट की आवश्यकता नहीं रह जाती है, तो मेमोरी खाली करने के लिए वे स्वचालित रूप से कचरा एकत्र कर लेते हैं।

उदाहरण:

let user = { name: "Alice" };
const weakCache = new WeakMap();

weakCache.set(user, "Cached data");

console.log(weakCache.get(user)); // Cached data

user = null; // The entry in weakCache will be garbage collected

पेशेवर:

  • प्रविष्टियों का स्वचालित कचरा संग्रहण, मेमोरी लीक को रोकना।
  • कैशिंग के लिए आदर्श जहां ऑब्जेक्ट का जीवनकाल अनिश्चित है।

दोष:

  • WeakMaps गणना योग्य नहीं हैं, जिससे उन्हें पुनरावृत्त करना कठिन हो जाता है।
  • कुंजी के रूप में केवल ऑब्जेक्ट तक सीमित।

6. करींग

करीइंग क्या है?

Currying एक फ़ंक्शन को रूपांतरित करता है जो कई तर्कों को कार्यों के अनुक्रम में लेता है जिनमें से प्रत्येक एक ही तर्क लेता है। यह एक कार्यात्मक प्रोग्रामिंग तकनीक है जो कोड लचीलेपन को बढ़ा सकती है।

समस्या: मान लें कि आपके पास एक फ़ंक्शन है जो प्रतिशत के आधार पर छूट लागू करता है। आप अपने पूरे ऐप में अलग-अलग प्रतिशत के साथ इस फ़ंक्शन का पुन: उपयोग करना चाहते हैं।

उदाहरण:

const applyDiscount = (discount) => (price) => price - price * (discount / 100);

const tenPercentOff = applyDiscount(10);
const twentyPercentOff = applyDiscount(20);

console.log(tenPercentOff(100)); // 90
console.log(twentyPercentOff(100)); // 80

पेशेवर:

  • पूर्व-तर्क लागू करके फ़ंक्शन को अधिक पुन: प्रयोज्य बना सकते हैं।
  • आपको आसानी से आंशिक एप्लिकेशन बनाने की अनुमति देता है।

दोष:

  • कार्यात्मक प्रोग्रामिंग से अपरिचित डेवलपर्स के लिए यह सहज नहीं है।
  • अत्यधिक उपयोग करने पर कोड अत्यधिक जटिल हो सकता है।

निष्कर्ष

इन उन्नत जावास्क्रिप्ट अवधारणाओं में से प्रत्येक - प्रॉक्सी, प्रतीक, जेनरेटर, टैग किए गए टेम्पलेट लिटरल्स, वीकमैप्स और करीइंग - विशिष्ट समस्याओं को अधिक कुशल, स्केलेबल या सुरुचिपूर्ण तरीकों से हल करने के लिए अद्वितीय क्षमताएं प्रदान करता है। हालाँकि, वे ट्रेड-ऑफ़ के साथ आते हैं, जैसे बढ़ी हुई जटिलता या संभावित प्रदर्शन समस्याएँ।

मुख्य उपाय यह है कि समझें कि इन अवधारणाओं का उपयोग कब और कहां करना है। सिर्फ इसलिए कि वे मौजूद हैं इसका मतलब यह नहीं है कि आपको उन्हें हर प्रोजेक्ट में उपयोग करना चाहिए। इसके बजाय, उन्हें तब शामिल करें जब वे स्पष्ट लाभ प्रदान करते हैं, जैसे कोड पठनीयता, प्रदर्शन या लचीलेपन में सुधार।

इन उन्नत तकनीकों की खोज करके, आप अधिक परिष्कृत समस्याओं से निपटने और अधिक शक्तिशाली जावास्क्रिप्ट लिखने में सक्षम होंगे।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/noorulhassan/advanced-javascript-concepts-every-developer-should-know-jee?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.com से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3