"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जावास्क्रिप्ट में गुणों के लिए noSuchMethod फ़ीचर का अनुकरण कैसे करें?

जावास्क्रिप्ट में गुणों के लिए noSuchMethod फ़ीचर का अनुकरण कैसे करें?

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

How to Simulate the noSuchMethod Feature for Properties in JavaScript?

जावास्क्रिप्ट में गुणों के लिए noSuchMethod फ़ीचर को कैसे कार्यान्वित करें

जावास्क्रिप्ट में, noSuchMethod राइनो और स्पाइडरमंकी जैसे कार्यान्वयन में सुविधा डेवलपर्स को अप्रयुक्त तरीकों के लिए गतिशील व्यवहार को लागू करने की अनुमति देती है। यह सुविधा प्रॉक्सी ऑब्जेक्ट को एक कस्टम संदेश वापस करने या किसी गैर-मौजूद विधि को कॉल करने पर एक विशिष्ट क्रिया करने में सक्षम बनाती है।

हालांकि मानक जावास्क्रिप्ट भाषा में गुणों के लिए कोई प्रत्यक्ष समकक्ष नहीं है, समान का अनुकरण करना संभव है ईसीएमएस्क्रिप्ट 6 प्रॉक्सी का उपयोग कर कार्यक्षमता। ईसीएमएस्क्रिप्ट 6 की रिलीज ने प्रॉक्सी पेश की है, जो एक शक्तिशाली उपकरण है जो आपको प्रॉपर्टी एक्सेस को रोकने और कस्टम व्यवहार को परिभाषित करने की अनुमति देता है। &&&]

एक कस्टम प्रॉक्सी हैंडलर को परिभाषित करें जो "प्राप्त करें" जाल को ओवरराइड करता है:

    प्राप्त करें: फ़ंक्शन (लक्ष्य, संपत्ति) { यदि (लक्ष्य में संपत्ति) { // यदि संपत्ति मौजूद है तो उसका मूल्य लौटाएं वापसी लक्ष्य[संपत्ति]; } अन्यथा यदि (typeof target.__noSuchMethod__ == "function") { // प्रॉपर्टी नाम के साथ __noSuchMethod__ विधि को कॉल करें // पहले तर्क के रूप में और बाकी के रूप में कोई अतिरिक्त तर्क रिटर्न फ़ंक्शन(...आर्ग्स) { वापसी लक्ष्य.__noSuchMethod__.call(लक्ष्य, संपत्ति, तर्क); }; } }
इस व्यवहार को सक्षम करने के लिए एक फ़ंक्शन बनाएं:
get: function(target, property) {
  if (property in target) {
    // Return the property value if it exists
    return target[property];
  } else if (typeof target.__noSuchMethod__ == "function") {
    // Call the __noSuchMethod__ method with the property name
    // as the first argument and any additional arguments as the rest
    return function(...args) {
      return target.__noSuchMethod__.call(target, property, args);
    };
  }
}
    function EnableNoSuchMethod(obj) { नया प्रॉक्सी लौटाएँ(obj, getTrapHandler); }
अपने प्रॉक्सी ऑब्जेक्ट को लपेटने के लिए EnableNoSuchMethod फ़ंक्शन का उपयोग करें:
get: function(target, property) {
  if (property in target) {
    // Return the property value if it exists
    return target[property];
  } else if (typeof target.__noSuchMethod__ == "function") {
    // Call the __noSuchMethod__ method with the property name
    // as the first argument and any additional arguments as the rest
    return function(...args) {
      return target.__noSuchMethod__.call(target, property, args);
    };
  }
}
    const proxy = EnableNoSuchMethod({ __noSuchMethod__: फ़ंक्शन(नाम, तर्क) { कंसोल.लॉग(`ऐसी कोई प्रॉपर्टी ${name} ${args}` के साथ एक्सेस नहीं की गई); } }); कंसोल.लॉग(प्रॉक्सी.कुछप्रॉपर्टी); // लॉग्स "ऐसी कोई संपत्ति नहीं है, someProperty को []" के साथ एक्सेस किया गया है
  1. इस दृष्टिकोण को लागू करके, आप ECMAScript 6 प्रॉक्सी का उपयोग करके जावास्क्रिप्ट में संपत्तियों के लिए
noSuchMethod
const proxy = enableNoSuchMethod({
  __noSuchMethod__: function(name, args) {
    console.log(`No such property ${name} accessed with ${args}`);
  }
});

console.log(proxy.someProperty); // Logs "No such property someProperty accessed with []"
विज्ञप्ति वक्तव्य यह लेख यहां पुनर्मुद्रित है: 1729232959 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.कॉम से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3