2015-11-19 9 views
6

से सीधे कक्षा के उदाहरण बनाना मेरे पास एक अलग फ़ाइल में एक कक्षा है। मुझे दूसरी फाइल में इसका एक उदाहरण बनाना होगा। मैंने यह कोशिश की:node.js -

var connection = new require('./connection.js')("ef66143e996d"); 

लेकिन यह वांछित काम नहीं कर रहा है। अभी मैं इसे अस्थायी समाधान के रूप में उपयोग कर रहा हूं:

var Connection = require('./connection.js'); 
connection = new Connection("ef66143e996d"); 

दो प्रश्न;

पहला, यह काम क्यों नहीं करता है।
दूसरा, मैं इसे एक लाइनर के साथ कैसे पूरा कर सकता हूं?

उत्तर

8

new कीवर्ड अपने पहले कार्य पर स्वयं लागू होता है। इस मामले में, यह require होता है। कोष्ठक में कथन को लपेटने से सही कार्य का खुलासा होगा:

var connection = new (require('./connection.js'))("ef66143e996d"); 
+0

यह काम करता है, ठीक है। लेकिन मैंने 'आवश्यकता' को '("ef66143e996d") 'के साथ बुलाया। 'आवश्यकता' ('./ connection.js') ("ef66143e996d") से वापस किए गए फ़ंक्शन पर 'नया' क्यों लागू नहीं होता है। यह पहला कार्य होना चाहिए जो यह आता है। – MindlessRanger

+1

'नई आवश्यकताएं (' कनेक्शन ')() 'चलाते समय, यह आवश्यक पहला कार्य होता है। इसका मूल्यांकन बाएं से दाएं किया जा रहा है। कोष्ठक में 'की आवश्यकता है (' कनेक्शन ')' इसे बनाता है ताकि जो कुछ भी कोष्ठक हल हो जाए, वह 'नया' लागू किया जा रहा है। – jperezov

+1

स्पष्टीकरण के लिए, 'आवश्यकता' ('./ connection.js') मानते हुए ''कनेक्शन' फ़ंक्शन लागू होने तक 'कनेक्शन' कनेक्शन 'कनेक्शन' फ़ंक्शन _isn't_ प्रकट नहीं होता है। 'नया' कीवर्ड 'आवश्यकता' फ़ंक्शन _unless_ से पहले ट्रिगर होगा फ़ंक्शन कोष्ठक में लपेटा जाएगा। यह वही कारण है '3 * 2 + 1 = 7', लेकिन '3 * (2 + 1) = 9'। इस उदाहरण में गुणा के रूप में 'नए' कीवर्ड के बारे में सोचें - इसकी उच्च प्राथमिकता है। – jperezov