2017-06-10 1 views

Antwort

4

Es gibt keine Kopie überhaupt gemacht. module.exports ist ein Objekt und dieses Objekt wird direkt geteilt. Wenn Sie Eigenschaften für dieses Objekt ändern, sehen alle, die dieses Modul geladen haben, diese Änderungen.

Beeinflusst die Änderung im Inhalt von msg in try2.js den Wert von msg in try1.js?

Ja, tut es. Es gibt keine Kopien. Das Exportobjekt wird direkt freigegeben. Alle Änderungen, die Sie an diesem exportierten Objekt vornehmen, werden allen Benutzern angezeigt, die dieses Modul verwenden.

FYI, ein Modul könnte verwenden, um Änderungen an diesem Objekt zu verhindern, nachdem die gewünschten Eigenschaften hinzugefügt wurden.

+0

@UllasKashyap - Da es sieht aus wie Sie hier ein bisschen neu sein kann, wenn diese Haben Sie Ihre Frage beantwortet, können Sie dies der Community anzeigen, indem Sie auf das grüne Häkchen neben der Antwort klicken, die Ihnen am meisten geholfen hat. Dadurch erhalten Sie auch einige Reputationspunkte beim Stack-Überlauf, wenn Sie das richtige Verfahren befolgen. – jfriend00

0

Ja, es betrifft es. Versuchen Sie Folgendes. Speichern Sie diesen Code in eine Datei m1.js:

module.exports.msg = 'hello world'; 

module.exports.prn = function() { 
    console.log(module.exports.msg); 
} 

dann den Knoten Konsole ausführen und versuchen Sie folgendes:

> const m1 = require('./m1') 
undefined 
> m1.prn() 
xxx 
> m1.msg = 'changed' 
'changed' 
> m1.prn() 
changed 
Verwandte Themen