Я создал класс внутри пространства имен в node.js 4.5.0, реализация которого такова:Как экспортировать класс, реализованный в пространстве имен В node.js
//
// Contents of MyList.js
//
"use strict";
var MyCollections {};
(function() {
this.List = function() {
//
// Simple List implementation ...
//
}
}).apply(MyCollections);
В моем скрипте, где я хотел бы создать экземпляр класса MyCollections.List, я закодировал следующее;
//
// Contents of CheckList.js
//
"using strict";
var collections = require('../MyList');
var list = new collections.List();
При запуске вышеуказанного скрипта через узел я получаю следующее:
PS C:\work\node.js\MyCollections\List> node .\CheckList.js
Number of Items in List: 2
C:\work\node.js\MyCollections\List\CheckList.js:6
var list = new collections.List();
^
TypeError: collections.List is not a function
at Object.<anonymous> (C:\work\node.js\MyCollections\List\CheckList.js:6:12)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:441:10)
at startup (node.js:139:18)
at node.js:974:3
Учитывая реализацию класса List в MyList.js выше, что я должен изменить, чтобы сделать класс Списка экспортируемого, так что я могу использовать его в более чем одном сценарии?
Приносим извинения, если это было ранее отправлено и получено, поскольку я, возможно, использовал неправильные термины в описании того, что я пытаюсь сделать. Я намерен объявить пространство имен и выставить прототипы функций, которые реализуют класс коллекции, в данном случае простой список, сохраняя при этом некоторую степень инкапсуляции . Я считаю, что реализация класса List верна, так как когда я пытаюсь создать экземпляр и заполнить список целых чисел в том же скрипте MyList.js, функции в списке работают, как ожидалось. Например;
//
// Statements after (function() { //... }).apply(MyCollections);
//
var list = new MyCollections.List();
list.append(1);
list.append(2);
list.append(3);
list.append(4);
console.log("Number of Items in List: " + list.count());
while (list.hasNext()) {
var trace =
'Item ' + (list.position() + 1) + ' of ' + list.count() + ' = ' +
list.getItem();
console.log(trace);
list.next();
}
//
// Output:
//
Number of Items in List: 4
Item 1 of 4 = 1
Item 2 of 4 = 2
Item 3 of 4 = 3
Item 4 of 4 = 4
Заранее благодарю вас за ваше время, помощь и терпение.
Спасибо за быстрый ответ; ваш ответ работает на месте: «использовать строгий»; var collections = require ('./ List'); var list = новые коллекции.List(); – ClockEndGooner
@ClockEndGooner (thumbsup) –