पर गतिशील रूप से कार्यों को जोड़ने का उचित तरीका मेरे पास एक विधि exec(arg1,..,argn)
के साथ एक साधारण वर्ग है और मैं कई उपनाम विधियों को रखना चाहता हूं जो exec
को पूर्वनिर्धारित तर्क मानों (उदा। exec_sync = exec.bind(this, true)
) के साथ कॉल करें।ES6 कक्षाओं
निम्नलिखित काम कर देता है:
class Executor {
constructor() {
this.exec_sync = this.exec.bind(this, true);
}
exec(sync, cmd, args/* ... */) {
// impl
}
}
लेकिन मैं अगर यह एक अच्छा विचार है या नहीं पता है कि अगर यह ES6 को मुहावरेदार है।
UDATE:
एक वास्तविक जीवन उदाहरण में मैं क्रमशः 3 और 4 छोरों, जो गतिशील रूप से वर्ग के लिए 12 उर्फ तरीकों की कुल संख्या जोड़ने के लिए उपयोग किया जाता है के साथ दो नेस्टेड छोरों की है। जब आप वास्तव में जेएस का प्रोटोटाइप-आधारित प्रोग्रामिंग भाषा होने का लाभ उठा सकते हैं तो यह उपनाम विधियों को स्पष्ट रूप से परिभाषित करने के लिए एक बोझिल कार्य होगा।
अद्यतन 2 - उदाहरण:
मान लीजिए हम एक विधि request(method, body)
साथ एक सरल HTTP ग्राहक है और हम उर्फ तरीकों प्रदान करने के लिए GET
, PUT
, आदि के लिए यह निम्नलिखित कुछ ऐसा दिखाई देगा हैं:
class HTTP {
constructor() {
['GET', 'PUT', 'POST', 'DEL'].forEach((method) => {
this[method] = this.request.bind(this, method);
}, this);
}
request(method, body) {
// execute the HTTP request
}
}
क्यों कई कार्यों को स्पष्ट रूप से नहीं बनाते? 'exec_sync (... args) {this.exec (true, ... args) को वापस करें; } ' – zerkms
@zerkms मुझे लगता है कि वर्ग स्पष्ट करता है कि यह स्पष्ट होगा। मुझे बस ऐसा कुछ करने की संभावना के बारे में दिलचस्पी थी। –
ईएस 6 कक्षाएं सिर्फ वाक्य रचनात्मक चीनी हैं। रनटाइम पर ऑब्जेक्ट में गुण जोड़ने के संदर्भ में कुछ भी नहीं बदला। –