ES6 विशेष वस्तुओं का विस्तार करने की अनुमति देता है। तो यह फ़ंक्शन से विरासत में संभव है। इस तरह के ऑब्जेक्ट को फ़ंक्शन के रूप में कहा जा सकता है, लेकिन मैं इस तरह के कॉल के लिए तर्क कैसे लागू कर सकता हूं?
class Smth extends Function {
constructor (x) {
// What should be done here
super();
}
}
(new Smth(256))() // to get 256 at this call?
कक्षा की किसी भी विधि को वर्ग उदाहरण के माध्यम से संदर्भ मिलता है this
। लेकिन जब इसे एक फ़ंक्शन के रूप में कहा जाता है, को this
संदर्भित करता है window
। जब इसे एक फ़ंक्शन के रूप में कहा जाता है तो मैं क्लास इंस्टेंस का संदर्भ कैसे प्राप्त कर सकता हूं?
पुनश्च: रूसी में एक ही सवाल।
super(x)
(यानी इसे साथ पारित Function
)? यकीन नहीं तो Function
वास्तव में बढ़ाया जा सकता है।
Error
दूसरों के बीच विस्तार में समस्याओं में चला गया हूं ।
Function
बस एक फंक्शन कंस्ट्रक्टर है। फ़ंक्शन के कार्यान्वयन को कंस्ट्रक्टर को पास करना होगा। यदि आप Smth
किसी कार्यान्वयन को स्वीकार नहीं करना चाहते हैं , तो आपको इसे कंस्ट्रक्टर में प्रदान करना होगा, अर्थात super('function implementation here')
।
Function
कंस्ट्रक्टर (रनटाइम) का उपयोग कर रहे हैं जो एक फ़ंक्शन एक्सप्रेशन (सिंटैक्स) से बहुत अलग है।