2017-06-01 2 views
0

würde Ich mag ein Objekt mit bestimmten Werten zu initialisieren, und ein anderes Objekt, das den Wert des zuvor initialisierten Objekt verwendet ... Besser als zu viele Worte, ich habe folgendes:Wie man den Zustand des importierten Javascript-Objektes mit ES6 behält?

// file1.js 
export default { 
    myVar1: null, 
    initialize(value) { 
    this.myVar1 = value 
    } 
} 

Die file2 Datei1 Importen und eine Funktion erstellen myVar1

// file2.js 
import { myVar1 } from 'file1' 

export default { 
    printVar() { 
    console.log(myVar1) 
    } 
} 

file3 initialisieren file1 zu drucken, und setzt den Wert von file2 myVar1

// file3.js 
import File1 from 'file1' 
import File2 from 'file2' 

File1.initialize('hello world') 
File2.printVar() // logs undefined 
drucken

Ich möchte Datei1 initialisieren und will Datei2 auf den Wert von Datei1 zugreifen, um es zu drucken. Obwohl der Wert beim Importieren nicht definiert ist.

Ich würde gerne ein Factory-Muster in Javascript verwenden, um das zu tun. Gibt es eine Möglichkeit, Folgendes zu erreichen?

Dank

+0

Sie können die 'getMyVar' Funktion definieren und sie anstelle von' myVar' verfügbar machen. Oder zerstören Sie nicht in 'file2' –

Antwort

0

Ihre file2 zu diesem

ändern
import file1 from './file1' 

export default { 
    printVar() { 
    console.log(file1.myVar1) 
    } 
} 
+0

Das funktioniert nicht – alexmngn

+0

Sie vermissen wahrscheinlich nur das '.', Ich habe meine Antwort aktualisiert. –

+0

Nein, das ist nicht das Problem, ich kann auf die Datei1 zugreifen, aber der Wert von 'myVar1' ist null – alexmngn

0

Dies ist ein anti-Muster auf dem Modul-Caching abzuhängen und Referenzen für solche Themen Objekt, unabhängig.

Sie die gesamte Datei importieren, müssen die Referenz anstelle des tatsächlichen Wert zu erhalten, so dass Sie zu tun haben:

import file1 from './file1' 

export default { 
    printVar() { 
    console.log(file1.myVar1) 
    } 
} 

auf diese Weise u nur den Wert von myVar1 importieren tun sie nicht, importieren Sie einen Verweis auf das Objekt, so können Sie den Objektinhalt verändern und immer wieder überall spiegeln.

P.S. Dies ist nicht zu empfehlen, und keine gute Zusammensetzung.

+0

Ich spiele gerade mit Javascript, ich bin nicht neu damit, aber ich frage mich, was die verschiedenen Möglichkeiten sein könnten diese Art von Komposition oder wie man sie besser erreichen kann. Ich habe versucht, die gesamte Datei zu importieren, und leider funktioniert das in meinem Fall immer noch nicht. – alexmngn

+0

Zusammensetzung ist "Zusammensetzung ist der Prozess der Kombination von zwei oder mehr Funktionen, um eine neue Funktion zu erzeugen. Komponieren von Funktionen zusammen ist wie eine Reihe von Rohren für unsere Daten durchfließen durchfließen." Lesen Sie diese https://medium.com/javascript-scene/master-the-javascript-interview-what-is-function-composition-20dfb109a1a0 – Bamieh

+0

Ich schaue hauptsächlich das Factory-Muster jetzt: https: //developers.caffeina com/object-composition-patterns-in-javascript-4853898bb9d0 – alexmngn

Verwandte Themen