\\\";const output = safeHTML`User said: ${userInput}`;console.log(output); // User said:
पेशेवर:
दोष:
वीकमैप्स और वीकसेट्स क्या हैं?
वीकमैप्स कुंजी-मूल्य जोड़े का संग्रह है जहां कुंजियाँ कमजोर रूप से संदर्भित होती हैं। इसका मतलब यह है कि यदि कुंजी का कोई अन्य संदर्भ मौजूद नहीं है, तो प्रविष्टि कचरा एकत्रित है।
समस्या: आप एक कैशिंग सिस्टम का निर्माण कर रहे हैं, और आप यह सुनिश्चित करना चाहते हैं कि एक बार जब ऑब्जेक्ट की आवश्यकता नहीं रह जाती है, तो मेमोरी खाली करने के लिए वे स्वचालित रूप से कचरा एकत्र कर लेते हैं।
उदाहरण:
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
पेशेवर:
दोष:
करीइंग क्या है?
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"}}जावास्क्रिप्ट एक ऐसी भाषा है जिसे कई डेवलपर्स दैनिक उपयोग करते हैं, लेकिन इसके पारिस्थितिकी तंत्र के भीतर कई छिपे हुए रत्न हैं जिनसे अनुभवी डेवलपर्स भी परिचित नहीं हो सकते हैं। यह आलेख कुछ कम-ज्ञात जावास्क्रिप्ट अवधारणाओं की पड़ताल करता है जो आपके प्रोग्रामिंग कौशल को महत्वपूर्ण रूप से बढ़ा सकते हैं। हम प्रॉक्सी, प्रतीक, जेनरेटर जैसी अवधारणाओं को कवर करेंगे, प्रत्येक को उदाहरणों के साथ प्रदर्शित करेंगे और उनकी शक्ति को दर्शाने के लिए समस्याओं को हल करेंगे।
अंत तक, आपको जावास्क्रिप्ट की गहरी समझ हो जाएगी और आप जान जाएंगे कि इन उन्नत सुविधाओं का उपयोग कब (और कब नहीं) करना है।
प्रॉक्सी क्या हैं?
जावास्क्रिप्ट में एक प्रॉक्सी आपको प्रॉपर्टी लुकअप, असाइनमेंट और फ़ंक्शन इनवोकेशन जैसे बुनियादी संचालन को रोकने और अनुकूलित करने की अनुमति देता है।
समस्या: कल्पना कीजिए कि आप एक ऐसी प्रणाली बना रहे हैं जहां उपयोगकर्ताओं के पास ऐसी वस्तुएं हैं जो उनके कार्यों को ट्रैक करती हैं। प्रॉपर्टी एक्सेस को ट्रैक करने के लिए अपने ऐप के हर हिस्से को संशोधित करने के बजाय, आप इन क्रियाओं को रोकने और लॉग करने के लिए प्रॉक्सी का उपयोग कर सकते हैं।
उदाहरण:
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
पेशेवर:
दोष:
प्रतीक क्या हैं?
प्रतीक 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
पेशेवर:
दोष:
जेनरेटर क्या हैं?
जेनरेटर ऐसे फ़ंक्शन हैं जिन्हें रोका और फिर से शुरू किया जा सकता है, जो उन्हें एसिंक प्रवाह को प्रबंधित करने या मांग पर डेटा उत्पन्न करने के लिए उपयोगी बनाता है।
समस्या: मान लीजिए आप फाइबोनैचि संख्याओं का एक क्रम उत्पन्न करना चाहते हैं। पूरे अनुक्रम को सामने से उत्पन्न करने के बजाय, आप एक जनरेटर बना सकते हैं जो एक-एक करके मान उत्पन्न करता है, जिससे आलसी मूल्यांकन की अनुमति मिलती है।
उदाहरण:
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
पेशेवर:
दोष:
टैग किए गए टेम्प्लेट लिटरल्स क्या हैं?
टैग किए गए टेम्प्लेट आपको एक फ़ंक्शन के साथ टेम्प्लेट शाब्दिक को संसाधित करने की अनुमति देते हैं, जिससे वे सीएसएस-इन-जेएस लाइब्रेरी जैसे डीएसएल (डोमेन-विशिष्ट भाषाएं) बनाने के लिए अविश्वसनीय रूप से शक्तिशाली बन जाते हैं।
समस्या: आपको एक टेम्पलेट सिस्टम बनाने की आवश्यकता है जो उपयोगकर्ता इनपुट को संसाधित करता है और 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>
पेशेवर:
दोष:
वीकमैप्स और वीकसेट्स क्या हैं?
वीकमैप्स कुंजी-मूल्य जोड़े का संग्रह है जहां कुंजियाँ कमजोर रूप से संदर्भित होती हैं। इसका मतलब यह है कि यदि कुंजी का कोई अन्य संदर्भ मौजूद नहीं है, तो प्रविष्टि कचरा एकत्रित है।
समस्या: आप एक कैशिंग सिस्टम का निर्माण कर रहे हैं, और आप यह सुनिश्चित करना चाहते हैं कि एक बार जब ऑब्जेक्ट की आवश्यकता नहीं रह जाती है, तो मेमोरी खाली करने के लिए वे स्वचालित रूप से कचरा एकत्र कर लेते हैं।
उदाहरण:
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
पेशेवर:
दोष:
करीइंग क्या है?
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
पेशेवर:
दोष:
इन उन्नत जावास्क्रिप्ट अवधारणाओं में से प्रत्येक - प्रॉक्सी, प्रतीक, जेनरेटर, टैग किए गए टेम्पलेट लिटरल्स, वीकमैप्स और करीइंग - विशिष्ट समस्याओं को अधिक कुशल, स्केलेबल या सुरुचिपूर्ण तरीकों से हल करने के लिए अद्वितीय क्षमताएं प्रदान करता है। हालाँकि, वे ट्रेड-ऑफ़ के साथ आते हैं, जैसे बढ़ी हुई जटिलता या संभावित प्रदर्शन समस्याएँ।
मुख्य उपाय यह है कि समझें कि इन अवधारणाओं का उपयोग कब और कहां करना है। सिर्फ इसलिए कि वे मौजूद हैं इसका मतलब यह नहीं है कि आपको उन्हें हर प्रोजेक्ट में उपयोग करना चाहिए। इसके बजाय, उन्हें तब शामिल करें जब वे स्पष्ट लाभ प्रदान करते हैं, जैसे कोड पठनीयता, प्रदर्शन या लचीलेपन में सुधार।
इन उन्नत तकनीकों की खोज करके, आप अधिक परिष्कृत समस्याओं से निपटने और अधिक शक्तिशाली जावास्क्रिप्ट लिखने में सक्षम होंगे।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3