जावास्क्रिप्ट प्रॉक्सी

इस ट्यूटोरियल में, आप उदाहरणों की मदद से जावास्क्रिप्ट प्रॉक्सी के बारे में जानेंगे।

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

एक प्रॉक्सी ऑब्जेक्ट बनाना

प्रॉक्सी का सिंटैक्स है:

 new Proxy(target, handler);

यहाँ,

  • new Proxy() - कंस्ट्रक्टर।
  • target - जिस ऑब्जेक्ट / फ़ंक्शन को आप प्रॉक्सी करना चाहते हैं
  • handler - वस्तु के कस्टम व्यवहार को फिर से परिभाषित कर सकते हैं

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

 let student1 = ( age: 24, name: "Felix" ) const handler = ( get: function(obj, prop) ( return obj(prop) ? obj(prop) : 'property does not exist'; ) ) const proxy = new Proxy(student1, handler); console.log(proxy.name); // Felix console.log(proxy.age); // 24 console.log(proxy.class); // property does not exist

यहां, get()वस्तु के संपत्ति मूल्य तक पहुंचने के लिए विधि का उपयोग किया जाता है। और यदि संपत्ति ऑब्जेक्ट में उपलब्ध नहीं है, तो यह रिटर्न संपत्ति मौजूद नहीं है।

जैसा कि आप देख सकते हैं, आप ऑब्जेक्ट के लिए नए ऑपरेशन बनाने के लिए एक प्रॉक्सी का उपयोग कर सकते हैं। एक मामला तब उत्पन्न हो सकता है जब आप जांचना चाहते हैं कि क्या किसी वस्तु में कोई विशेष कुंजी है और उस कुंजी के आधार पर एक क्रिया करें। ऐसे मामलों में, प्रॉक्सी का उपयोग किया जा सकता है।

आप एक खाली हैंडलर भी पास कर सकते हैं। जब एक खाली हैंडलर पारित किया जाता है, तो प्रॉक्सी एक मूल वस्तु के रूप में व्यवहार करता है। उदाहरण के लिए,

 let student = ( name: 'Jack', age: 24 ) const handler = ( ); // passing empty handler const proxy1 = new Proxy(student, ()); console.log(proxy1); // Proxy (name: "Jack", age: 24) console.log(proxy1.name); // Jack

प्रॉक्सी हैंडलर

प्रॉक्सी दो हैंडलर तरीके get()और प्रदान करता है set()

get () हैंडलर

get()विधि लक्ष्य ऑब्जेक्ट के गुणों को एक्सेस करने के लिए प्रयोग किया जाता है। उदाहरण के लिए,

 let student = ( name: 'Jack', age: 24 ) const handler = ( // get the object key and value get(obj, prop) ( return obj(prop); ) ) const proxy = new Proxy(student, handler); console.log(proxy.name); // Jack

यहां, get()विधि वस्तु और संपत्ति को इसके मापदंडों के रूप में लेती है।

set () हैंडलर

set()विधि एक वस्तु का मूल्य निर्धारित करने के लिए प्रयोग किया जाता है। उदाहरण के लिए,

 let student = ( name: 'John' ) let setNewValue = ( set: function(obj, prop, value) ( obj(prop) = value; return; ) ); // setting new proxy let person = new Proxy(student, setNewValue); // setting new key/value person.age = 25; console.log(person); // Proxy (name: "John", age: 25)

यहां, ageछात्र ऑब्जेक्ट में एक नई संपत्ति जोड़ी जाती है।

प्रॉक्सी का उपयोग

1. मान्यता के लिए

आप सत्यापन के लिए एक प्रॉक्सी का उपयोग कर सकते हैं। आप एक कुंजी के मूल्य की जांच कर सकते हैं और उस मूल्य के आधार पर एक क्रिया कर सकते हैं।

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

 let student = ( name: 'Jack', age: 24 ) const handler = ( // get the object key and value get(obj, prop) ( // check condition if (prop == 'name') ( return obj(prop); ) else ( return 'Not allowed'; ) ) ) const proxy = new Proxy(student, handler); console.log(proxy.name); // Jack console.log(proxy.age); // Not allowed

यहां, केवल छात्र ऑब्जेक्ट की नाम संपत्ति सुलभ है। और, इसकी अनुमति नहीं है।

2. किसी वस्तु का केवल दृश्य पढ़ें

कई बार ऐसा भी हो सकता है कि आप दूसरों को किसी वस्तु में बदलाव नहीं करने देना चाहते। ऐसे मामलों में, आप किसी ऑब्जेक्ट को केवल पढ़ने योग्य बनाने के लिए प्रॉक्सी का उपयोग कर सकते हैं। उदाहरण के लिए,

 let student = ( name: 'Jack', age: 23 ) const handler = ( set: function (obj, prop, value) ( if (obj(prop)) ( // cannot change the student value console.log('Read only') ) ) ); const proxy = new Proxy(student, handler); proxy.name = 'John'; // Read only proxy.age = 33; // Read only

उपरोक्त कार्यक्रम में, कोई भी किसी भी तरह से वस्तु को बदल नहीं सकता है।

यदि कोई किसी भी तरह से वस्तु को म्यूट करने की कोशिश करता है, तो आपको केवल रीड रीड ओनली एक स्ट्रिंग प्राप्त होगी।

3. दुष्प्रभाव

शर्त पूरी होने पर आप किसी अन्य फ़ंक्शन को कॉल करने के लिए प्रॉक्सी का उपयोग कर सकते हैं। उदाहरण के लिए,

 const myFunction = () => ( console.log("execute this function") ); const handler = ( set: function (target, prop, value) ( if (prop === 'name' && value === 'Jack') ( // calling another function myFunction(); ) else ( console.log('Can only access name property'); ) ) ); const proxy = new Proxy((), handler); proxy.name = 'Jack'; // execute this function proxy.age = 33; // Can only access name property

जावास्क्रिप्ट प्रॉक्सी को जावास्क्रिप्ट ईएस 6 के संस्करण से पेश किया गया था । हो सकता है कि कुछ ब्राउज़र इसके उपयोग का पूर्ण समर्थन न करें। अधिक जानने के लिए, जावास्क्रिप्ट प्रॉक्सी पर जाएँ।

दिलचस्प लेख...