जावास्क्रिप्ट में noSuchMethod सुविधा गैर-मौजूद तरीकों पर कॉल को इंटरसेप्ट करने की अनुमति देती है . हालाँकि, क्या संपत्तियों के लिए कोई समान तंत्र है?
ईएस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");
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3