Как требуется работа с новым оператором в node.js?
Давайте иметь файл .js с этим кодом:
module.exports.func = function(txt) {
this.a = 1;
this.b = 2;
console.log(txt, this);
return this;
}
Теперь у нас есть другой файл JS, где мы делаем следующее:
var r1 = new (require('./file')).func('r1');
var r2 = new require('./file').func('r2');
В случае r1 это работает как задумано - r1 содержит ссылку на вновь созданный объект.
В случае r2 это не работает - r2 получает ссылку на module.exports из файла file.js.
Намерением было создать новый объект, вызвав конструктор func (). Конечно, я могу сделать это также так, что равно r1:
var r3 = require('./file');
var r4 = new r3.func('r1');
Тем не менее, я не понимаю, почему r2 не ведет себя так же, как r1.
Как могут измениться дополнительные скобки ('./ file')?