2016-11-17 5 views
0

Hallo Ich frage mich nur, ich muss mehrere Datenobjektvariablen auf viele verschiedene JavaScript-Datei in meinem Projekt erstellen, die alle die gleichen Schlüssel haben. Dieses Objekt wird als Datenquelle für ein Paket verwendet, das ich verwenden muss. zum BeispielData Objects & classes

{ 
V1: 0, 
V2: 0, 
V3: 0. 
} 

Ich dachte über JavaScript-Klassen, aber ich weiß nicht, ob das der richtige Weg ist. So etwas wie

var i = new iVar(); 

Also habe ich eine Klasse wie

so
class outputData { 
    constructor(){ 
     this.O0 = 0; 
     this.O1 = 0; 
     this.O2 = 0; 
     this.O3 = 0; 
     this.O4 = 0; 
     this.O5 = 0; 
     this.O6 = 0; 
     this.O7 = 0; 
     this.O8 = 0; 
     this.O9 = 0; 
     this.O10 = 0; 
     this.O11 = 0; 
     this.O12 = 0; 
    } 
} 

ich importiert sie dann in die Datei, die ich wollte, damit es auf Lüge verwenden.

import '../OutPutDataClass.js'; 

var openingDeb = new outputData(); 

aber ich bekomme ein

Uncaught ReferenceError: outputData is not defined(…) 

nicht, warum sicher. Der Grund, warum ich die mit Daten initialisierten Objekte haben wollte, ist, dass ich später eine Schleife verwenden kann, um durch das Objekt zu iterieren, um eine Funktion aufzurufen, um die korrekten Werte unter Verwendung eines Schlüssels und eines reaktiven Verfolgers einzustellen. Ich bin mir nicht sicher, ob dies der richtige Weg ist, dies zu tun, aber ich lerne immer noch, wenn jemand mich darüber aufklären könnte, wäre das großartig. Ich habe etwas über JavaScript-Klassen recherchiert, aber alle Beispiele erstellen die Klasse lokal in der gleichen Datei, von der ich nicht anrufen kann.

Vielen Dank

+0

Ich würde wahrscheinlich nicht verwenden 'CLASS' bis Browser-Unterstützung für ECMA6 viel, viel besser .... (siehe https://kangax.github.io/compat-table/es6/) – BadZen

+0

@BadZen: Nach der Tatsache, dass sie die "Import" -Syntax verwenden, nehme ich an, dass sie einen Transpiler verwenden. –

+0

@BadZen ja sieht aus als hättest du recht.Was würdest du vorschlagen. –

Antwort

0

Das Problem ist nicht mit Ihrer Klassendefinition (soweit ich das beurteilen kann, es ist in Ordnung!) - es ist mit Ihrem Verständnis davon, wie die ES2015 import syntax funktioniert. Es gibt keine 'globale Reichweite' sozusagen - wenn Sie exportieren möchten/Import etwas, müssen Sie es explizit sein, etwa so:

Datei 1:

export default class OutputData { 
    constructor(){ 
     ... 
    } 
} 

File 2:

import OutputData from '../OutPutDataClass.js'; 

var openingDeb = new OutputData(); 
0

Sie müssen die Klasse aus der Datei exportieren, um sie woanders zu verwenden.

Ihre OutPutDataClass.js Datei:

export default class outputData { 
    constructor(){ 
     this.O0 = 0; 
     this.O1 = 0; 
     this.O2 = 0; 
     this.O3 = 0; 
     this.O4 = 0; 
     this.O5 = 0; 
     this.O6 = 0; 
     this.O7 = 0; 
     this.O8 = 0; 
     this.O9 = 0; 
     this.O10 = 0; 
     this.O11 = 0; 
     this.O12 = 0; 
    } 
} 

Ihre Datei, in der Sie outputData Klasse verwenden möchten:

import OutputData from '../OutPutDataClass.js'; 

var openingDeb = new OutputData(); 
+1

Sie vermissen ein 'von' in Ihrem Import. –

+1

Danke, ich habe aktualisiert –

0

Warum nicht eine Funktion mit dem Objekt als Rückgabewert haben? wie

function giveMeMyObject() { 
    return {V1: "value1", V2: "value2",... }; 
}