Объект Javascript для классов ES6

#javascript #ecmascript-6

#javascript #ecmascript-6

Вопрос:

У меня есть плагин javascript, написанный на ванильном javascript в объектной нотации

пример

 start = {
  config: {
    a : 1
  },
  core: {
    engine_part1:function() {

    },
    engine_part2: function() {
    } 
  }
  init: function(){

  }
}
 

В этой объектной нотации функции могут быть объявлены внутри core ie, engine_part1() и engine_part2()

Существуют ли какие-либо обходные пути для достижения того же с классами Javascript?

В классах Javascript класс имеет данные и функции, но я не мог писать функции внутри объекта, как core в объектной нотации.

Заранее спасибо

Комментарии:

1. Ваша объектная нотация недопустима в a=1 и }ninit:

2. Вы вообще не можете преобразовать один экземпляр в класс. Что не так с обозначением объектов?

3. Нотация объектов @Bergi очень крутая, но я пытаюсь преобразовать ее в нотацию класса ES6

4. @YongQuan Прости меня, чувак, я не заботился о синтаксисе при публикации. Почему бы вам не изучить основную идею, которую я задал, вместо этого вы изучаете синтаксические ошибки

5. @CaptainAdmin Я хочу сказать, что объекты и классы — это две принципиально разные вещи, и вы не можете использовать одно обозначение для другого.

Ответ №1:

Просто используйте class инструкцию для объявления вашего класса, затем добавьте его свойства в constructor методы static and its () в теле класса.

 class Start {
  constructor() {
    this.config = {
      a: 1
    };
    
    this.core = {
      engine_part1: () => (console.log('engine_part1')),
      engine_part2: () => (console.log('engine_part2')),
    }
  }
  
  init() {
    console.log('init');
  }
}

const start = new Start;

console.log(start.config);

start.core.engine_part1();
start.init(); 

Комментарии:

1. Большое вам спасибо! Высоко ценю ваше время, потраченное на ответ.

2. Но у меня много таких обозначений, поэтому я думаю, что это не очень хороший способ поместить все это в конструктор

3. Не уверен, что понял, что вы хотели сказать.