Wie muss mit dem neuen Operator in node.js gearbeitet werden?

Lassen Sie uns eine file.js mit diesem Code haben:

module.exports.func = function(txt) {
    this.a = 1;
    this.b = 2;
    console.log(txt, this);
    return this;
}

Jetzt haben wir eine andere JS-Datei, in der wir Folgendes tun:

var r1 = new (require('./file')).func('r1');
var r2 = new require('./file').func('r2');

In r1 funktioniert es wie vorgesehen - r1 enthält einen Verweis auf das neu erstellte Objekt.

In r2 funktioniert es nicht - r2 erhält einen Verweis auf module.exports aus der file.js.

Die Absicht war, ein neues Objekt durch Aufrufen des Konstruktors func () zu erstellen. Klar, ich kann es auch so machen, was gleich r1 ist:

var r3 = require('./file');
var r4 = new r3.func('r1');

Ich verstehe jedoch nicht, warum sich r2 nicht wie r1 verhält.

Worin besteht der Unterschied zwischen den zusätzlichen Klammern ('./ file')?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage