क्या जावास्क्रिप्ट डायनामिक गेटर्स/सेटर्स को लागू कर सकता है?
डायनामिक गेटर्स और सेटर्स जावास्क्रिप्ट ऑब्जेक्ट्स को पूर्वनिर्धारित गुणों से परे संपत्ति पहुंच और संशोधन को संभालने की अनुमति देते हैं। जबकि पहले की जावास्क्रिप्ट तकनीकों ने ज्ञात गुणों के लिए विशिष्ट गेटर्स और सेटर्स को नियोजित किया था, यह लेख किसी भी अपरिभाषित गुणों के लिए कैच-ऑल गेटर्स और सेटर्स को लागू करने की संभावना का पता लगाता है।
ES2015 प्रॉक्सी: एक गतिशील समाधान
ES2015 ने जावास्क्रिप्ट प्रॉक्सी पेश की, जो उन वस्तुओं के निर्माण को सक्षम बनाती है जो अन्य वस्तुओं के लिए मध्यस्थ के रूप में काम करती हैं। यह क्षमता गतिशील गेटर्स और सेटर्स को खोलती है:
const original = {
example: "value",
};
const proxy = new Proxy(original, {
get(target, name, receiver) {
if (Reflect.has(target, name)) {
let rv = Reflect.get(target, name, receiver);
if (typeof rv === "string") {
rv = rv.toUpperCase();
}
return rv;
}
return "missing";
},
});
console.log(`proxy.example = ${proxy.example}`); // "proxy.example = VALUE"
console.log(`proxy.unknown = ${proxy.unknown}`); // "proxy.unknown = missing"
इस उदाहरण में, प्रॉक्सी ऑब्जेक्ट मूल ऑब्जेक्ट के लिए प्रॉपर्टी एक्सेस को रोकता है। स्ट्रिंग प्रॉपर्टी तक पहुंचने पर, प्रॉक्सी इसे अपरकेस में परिवर्तित करता है और इसे वापस कर देता है; अज्ञात गुणों के लिए, यह अपरिभाषित के बजाय "लापता" लौटाता है।
यदि ब्राउज़र ES2015 (ES6) का समर्थन करता है तो यह कार्यान्वयन क्रॉस-ब्राउज़र संगत है। पुराने ब्राउज़रों के लिए, पॉलीफ़िल या वैकल्पिक तकनीकों का उपयोग करने पर विचार करें। प्रॉक्सी गतिशील गेटर्स और सेटर्स के लिए एक लचीला समाधान प्रदान करते हैं, जो मूल ऑब्जेक्ट को संशोधित किए बिना कुशल संपत्ति प्रबंधन और संपत्ति आत्मनिरीक्षण को सक्षम करते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3