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

जावास्क्रिप्ट में प्रॉक्सी का उपयोग करके गुणों के लिए ऐसी कोई विधि व्यवहार कैसे लागू करें?

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

How to Implement No Such Method Behavior for Properties using Proxies in JavaScript?

गुणों के लिए प्रॉक्सी-आधारित noSuchMethod को लागू करना

जावास्क्रिप्ट में noSuchMethod सुविधा गैर-मौजूद तरीकों पर कॉल को इंटरसेप्ट करने की अनुमति देती है . हालाँकि, क्या संपत्तियों के लिए कोई समान तंत्र है?

बचाव के लिए ईएस6 प्रॉक्सी

ईएस6 प्रॉक्सी संपत्ति पहुंच को अनुकूलित करने की क्षमता प्रदान करते हैं। हम गुणों के लिए __noSuchMethod__-जैसे व्यवहार का अनुकरण करने के लिए इसका उपयोग कर सकते हैं:

function enableNoSuchMethod(obj) {
  return new Proxy(obj, {
    get(target, p) {
      if (p in target) {
        return target[p];
      } else if (typeof target.__noSuchMethod__ == "function") {
        return function(...args) {
          return target.__noSuchMethod__.call(target, p, args);
        };
      }
    }
  });
}

उदाहरण कार्यान्वयन

यहां "डमी" वर्ग को लागू करने के लिए प्रॉक्सी का उपयोग करने का एक उदाहरण दिया गया है जो अज्ञात गुणों को संभाल सकता है:

function Dummy() {
  this.ownProp1 = "value1";
  return enableNoSuchMethod(this);
}

Dummy.prototype.test = function() {
  console.log("Test called");
};

Dummy.prototype.__noSuchMethod__ = function(name, args) {
  console.log(`No such method ${name} called with ${args}`);
};

var instance = new Dummy();
console.log(instance.ownProp1);
instance.test();
instance.someName(1, 2);
instance.xyz(3, 4);
instance.doesNotExist("a", "b");

Usage

  • __ownProp1__: मौजूदा संपत्ति मूल्य को लॉग करता है।
  • __test__: परिभाषित विधि को ट्रिगर करता है।
  • someName(1, 2)__: तर्कों के साथ एक गैर-मौजूद विधि को कॉल करता है, जो __noSuchMethod हुक द्वारा नियंत्रित किया जाता है।
  • __xyz(3, 4)__: उपरोक्त के समान, लेकिन दर्शाता है कि गैर-फ़ंक्शन गुणों को भी संभाला जा सकता है।
  • __doesNotExist("a) ", "बी")__: दिए गए तर्कों के साथ एक विधि/संपत्ति की अनुपस्थिति को लॉग करता है।
विज्ञप्ति वक्तव्य इस लेख को पुन: प्रस्तुत किया गया है: 1729232480 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] पर संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3