Jak wymaga pracy z nowym operatorem w node.js?
Zróbmy plik.js z tym kodem:
module.exports.func = function(txt) {
this.a = 1;
this.b = 2;
console.log(txt, this);
return this;
}
Teraz mamy inny plik JS, w którym wykonujemy następujące czynności:
var r1 = new (require('./file')).func('r1');
var r2 = new require('./file').func('r2');
W przypadku r1 działa zgodnie z przeznaczeniem - r1 zawiera odwołanie do nowo utworzonego obiektu.
W przypadku r2 nie działa - r2 pobiera odwołanie do modułu module.export z pliku js.
Intencją było stworzenie nowego obiektu przez wywołanie konstruktora func (). Oczywiście, mogę to zrobić w ten sposób, który jest równy r1:
var r3 = require('./file');
var r4 = new r3.func('r1');
Nie rozumiem jednak, dlaczego r2 nie zachowuje się tak samo jak r1.
W jaki sposób dodatkowe nawiasy wokół require ('./ file') robią różnicę?