Mam klasę w osobnym pliku. Muszę utworzyć jego instancję w innym pliku. Próbowałem tego:node.js - Tworzenie instancji klasy bezpośrednio z żądania
var connection = new require('./connection.js')("ef66143e996d");
Ale to nie działa tak, jak chciałem. Teraz używam tego jako tymczasowego rozwiązania:
var Connection = require('./connection.js');
connection = new Connection("ef66143e996d");
Dwa pytania;
Po pierwsze, dlaczego to nie działa.
Po drugie, w jaki sposób mogę to osiągnąć za pomocą jednego liniowca?
To działa, ok. Ale wywołałem 'require' z' ("ef66143e996d") '. Dlaczego 'new' nie odnosi się do funkcji zwróconej przez' require ('./ connection.js') ("ef66143e996d") '. To musi być pierwsza funkcja, z którą się spotyka. – MindlessRanger
Podczas uruchamiania 'new require ('connection')()' require jest pierwszą dostępną funkcją. Jest oceniany od lewej do prawej. Zawijanie 'require ('connection')' w nawiasach powoduje, że niezależnie od tego, do czego nawiązywane są nawiasy, jest stosowane wyrażenie 'new'. – jperezov
Aby wyjaśnić, zakładając 'require ('./ connection.js'), ujawnia się funkcja' Connection', funkcja 'Connection' _isn't_ jest wyświetlana do momentu wywołania funkcji' require'. Słowo kluczowe 'new' uruchomi się przed funkcją' require' _unless_ funkcja jest zawijana w nawiasy. Z tego samego powodu '3 * 2 + 1 = 7', ale' 3 * (2 + 1) = 9'. Pomyśl o słowach kluczowych 'new' jako mnożeniu w tym przykładzie - ma on wyższy priorytet. – jperezov