Как требуется работа с новым оператором в 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.

Как дополнительные скобки вокруг ('./файл') Сделать разницу?

Ответы на вопрос(1)

Ваш ответ на вопрос