2016-11-17 2 views
0

Привет, мне просто интересно, мне нужно создать несколько переменных объекта данных во множестве разных файлов JavaScript во всем моем проекте, у всех есть одинаковые ключи. Этот объект будет использоваться в качестве источника данных для пакета, который я должен использовать. напримерОбъекты данных и классы

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

Я думал об использовании классов JavaScript, но я не знаю, правильно ли это делается. Что-то вроде

var i = new iVar(); 

Так что я создал класс, как так

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; 
    } 
} 

я затем импортировать его в файл, я хотел бы использовать его на лжи так.

import '../OutPutDataClass.js'; 

var openingDeb = new outputData(); 

Но я получаю

Uncaught ReferenceError: outputData is not defined(…) 

Не знаю, почему. Причина, по которой я хотел, чтобы объекты были инициализированы данными, поэтому я могу использовать цикл позже для итерации через объект, чтобы вызвать функцию для установки правильных значений с помощью ключа и реактивного трекера. Я не уверен, что это правильный способ сделать это, но я все еще участвую, поэтому, если кто-то может воспитывать меня, это будет здорово. Я провел некоторое исследование по классам JavaScript, но весь пример создавал класс локально в том же файле, который вызвал тот, из которого не то, что мне нужно.

Большое спасибо

+0

я, вероятно, не будет использовать 'class', пока поддержка браузера для ECMA6 не намного, намного лучше .... (см https://kangax.github.io/compat-table/es6/) – BadZen

+0

@BadZen: Судя по тому, что они используют синтаксис 'import', я бы предположил, что они используют транспилер. –

+0

@BadZen да выглядит так, как будто вы правы. Что бы вы предложили. –

ответ

0

Проблема не с определением класса (насколько я могу сказать, что это хорошо!) - это с пониманием того, как ES2015 import syntax работ. Там нет «глобального масштаба», так сказать - если вы хотите, чтобы экспорт/импорт что-то, вы должны быть четко об этом, например, так:

Файл 1:

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

Файла 2:

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

var openingDeb = new OutputData(); 
0

Вам нужно экспортировать класс из файла, чтобы использовать его где-то еще.

Вашего OutPutDataClass.js файл:

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; 
    } 
} 

Ваш файл, в котором вы хотите использовать outputData класса:

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

var openingDeb = new OutputData(); 
+1

Вам не хватает 'from' в вашем импорте. –

+1

Спасибо, я обновил –

0

Почему нет функции с вашим объектом в качестве возвращаемого значения? как

function giveMeMyObject() { 
    return {V1: "value1", V2: "value2",... }; 
} 
Смежные вопросы