операторы
Как видите
function call ниже оператора new, и если выделить скобками вашу запись, то интерпретатор делает следующее —
var model1 = (new require('./test/model1'))();
Функция require отработает хорошo, даже не зависимо от какого контекста была вызвана — а последующий
function call будет уже в контексте
global
self == model1 == model2 == global
Разные решения:
var module = new (require('module'))();
// екзотические варианты -
var module = new require('module').prototype.constructor();
var module = new new require('module')();