2016-04-19 6 views
8

के रूप में कॉल नहीं कर सकता है क्या कोई ऐसा तरीका है जो मुझे एक समारोह के रूप में कक्षा को कॉल करने की अनुमति देगा। मुझे नीचे कार्यक्षमता मिल रही है, जहां कक्षा के भीतर main विधि है और यही वह तरीका है जिसे मैं विधि निष्पादित करना चाहता हूं।किसी वर्ग को

class test { 
    constructor() { 
    return this.main 
    } 
    main() { 
    return Promise.resolve('thomas') 
    } 
} 

test().then(name => { 
    console.log(name) 
}) 

ऐसा लगता है कि मेरा एकमात्र अन्य विकल्प इस तरह एक रैपर फ़ंक्शन होगा।

class Test { 
    constructor (name) { 
    this.name = name 
    } 
    main() { 
    return Promise.resolve(this.name) 
    } 
} 

let test = (name) => { 
    return new Test(name).main() 
} 

test('thomas').then(name => { 
    console.log(name) 
}) 
+7

जेएस कक्षाओं का उपयोग करते समय आपको 'new' कीवर्ड का उपयोग करना होगा। मैं मानता हूं कि आपके द्वारा प्रदान किया गया दूसरा विकल्प सही होगा। (या कक्षाओं का उपयोग न करें) – evolutionxbox

+2

एक वर्ग एक वस्तु का निर्माण करता है। आपका कन्स्ट्रक्टर कक्षा का एक उदाहरण नहीं, एक और समारोह वापस करेगा। यह बहुत समझ में नहीं आता है। आप वास्तव में क्या करने की कोशिश कर रहे हैं? हो सकता है कि कक्षा में एक स्थिर विधि वह है जिसे आप ढूंढ रहे हैं? –

+0

@ फ़ेलिक्सक्लिंग मैं एक जटिल फ़ंक्शन बनाना चाहता हूं जिसमें बहुत से आंतरिक कार्य हैं और छोटे कार्यों का एक टन बनाने के बजाय 'this.methodName' का उपयोग करके संदर्भों को संदर्भित करते हैं। मैं केवल उस 'मुख्य' फ़ंक्शन का उपयोग करना चाहता हूं। मैं समझता हूं कि यह कक्षा का सबसे अच्छा उपयोग नहीं है, लेकिन अगर मैं इसे ऊपर की तरह लपेटता हूं तो मैं अपना केक भी ले सकता हूं और इसे भी खा सकता हूं। – ThomasReggi

उत्तर

6

जावास्क्रिप्ट में कक्षाओं का उपयोग करते समय new कीवर्ड का उपयोग करें। मुझे एक समान समस्या थी जब तक कि मैंने कक्षा नाम से पहले new जोड़ा।

संबंधित मुद्दे