Ho una classe in un file separato. Ho bisogno di creare un'istanza di esso in un altro file. Ho provato questo:node.js - Creazione istanza di una classe direttamente da richiedere
var connection = new require('./connection.js')("ef66143e996d");
Ma questo non funziona come volevo. In questo momento sto usando questa soluzione temporanea:
var Connection = require('./connection.js');
connection = new Connection("ef66143e996d");
Due domande;
Innanzitutto, perché non funziona.
In secondo luogo, come posso realizzare questo con un unico rivestimento?
Questo funziona, ok. Ma ho invocato il 'require' con' ("ef66143e996d") '. Perché non 'new' si applica alla funzione restituita da' require ('./ connection.js') ("ef66143e996d") '. Questa deve essere la prima funzione che incontra. – MindlessRanger
Quando si esegue 'new require ('connection')()', require è la prima funzione che incontra. Viene valutato da sinistra a destra. Il wrapping 'require ('connection')' tra parentesi rende tutto ciò a cui le parentesi si risolvono è ciò a cui 'new' viene applicato. – jperezov
Per chiarire, assumendo 'require ('./ connection.js')' espone la funzione 'Connection', la funzione' Connection' _isn't_ exposed fino a quando non viene richiamata la funzione 'require'. La parola chiave 'new' si innescherebbe prima della funzione' require' _unless_ la funzione è racchiusa tra parentesi. È la stessa ragione per "3 * 2 + 1 = 7', ma" 3 * (2 + 1) = 9'. Pensa alla parola chiave 'new' come la moltiplicazione in questo esempio: ha una precedenza più alta. – jperezov