¿Cómo requiere trabajar con un nuevo operador en node.js?
Vamos a tener un archivo.js con este código:
module.exports.func = function(txt) {
this.a = 1;
this.b = 2;
console.log(txt, this);
return this;
}
Ahora tenemos otro archivo JS donde hacemos lo siguiente:
var r1 = new (require('./file')).func('r1');
var r2 = new require('./file').func('r2');
En el caso de r1, funciona según lo previsto: r1 contiene una referencia al objeto recién creado.
En el caso de r2, no funciona: r2 obtiene una referencia a module.exports desde dentro de file.js.
La intención era crear un nuevo objeto llamando al constructor func (). Claro, puedo hacerlo también de esta manera que es igual a r1:
var r3 = require('./file');
var r4 = new r3.func('r1');
Sin embargo, no entiendo por qué r2 no se comporta de la misma manera que r1.
¿De qué manera el paréntesis adicional alrededor de ('./ archivo') hace una diferencia?