Ich habe eine Klasse in einer separaten Datei. Ich muss eine Instanz davon in einer anderen Datei erstellen. Ich habe das versucht:node.js - Erstellen einer Instanz einer Klasse direkt von require
var connection = new require('./connection.js')("ef66143e996d");
Aber das funktioniert nicht, wie ich wollte. Im Moment benutze ich das als eine vorübergehende Lösung:
var Connection = require('./connection.js');
connection = new Connection("ef66143e996d");
Zwei Fragen;
Erstens, warum funktioniert das nicht.
Zweitens, wie kann ich dies mit einem Einzeiler erreichen?
Das funktioniert, ok. Aber ich rief 'require' mit' ("ef66143e996d") 'auf. Warum gilt "neu" nicht für die von 'require ('./ connection.js') zurückgegebene Funktion (" ef66143e996d ")'. Dies muss die erste Funktion sein, auf die es trifft. – MindlessRanger
Wenn Sie 'new require ('connection')()' ausführen, ist require die erste Funktion, auf die es stößt. Es wird von links nach rechts ausgewertet. Wrapping 'require ('connection')' in Klammern macht es so, dass, was auch immer in den Klammern zu finden ist, auf 'new' angewendet wird. – jperezov
Um zu verdeutlichen, dass 'require ('./ connection.js') 'die Funktion' Connection 'freigibt, wird die' Connection' Funktion _nicht_ offengelegt, bis die 'require' Funktion aufgerufen wird. Das Schlüsselwort 'new' würde vor der Funktion' require' ausgelöst werden _unless_ Die Funktion wird in Klammern eingeschlossen. Es ist der gleiche Grund "3 * 2 + 1 = 7", aber "3 * (2 + 1) = 9". Denken Sie an das Schlüsselwort "new" als Multiplikation in diesem Beispiel - es hat eine höhere Priorität. – jperezov