Преобразование класса в функцию - PullRequest
0 голосов
/ 26 октября 2019

Я создаю приложение для реального времени и хочу преобразовать этот class код в function.

Будет ли приведенная ниже функция эквивалентной? И из того, что кто-то может видеть, было бы полезно сохранить класс как класс, а не функцию?

class IdeaService {
  constructor() {
    this.ideas = [];
  }

  async find() {
    return this.ideas;
  }

  async create(data) {
    const idea = {
      id: this.ideas.length,
      text: data.text,
      tech: data.tech,
      viewer: data.viewer
    };

    idea.time = moment().format('h:mm:ss a');

    this.ideas.push(idea);

    return idea;
  }
}

FUNCTION

function ideaService() {

let ideas = [];

 async find() {

  return ideas;

 }

 async create(data) {

 const idea = {

      id:     ideas.length,
      text:   data.text,
      tech:   data.tech,
      viewer: data.viewer

    }

    idea.time = moment().formate('h:mm:ss a');

    ideas.push(idea);

    return idea;

 }

}

1 Ответ

1 голос
/ 27 октября 2019

попробуйте

let IdeaService = (function() {
    let ideas = [];

    async function find() {
        return ideas;
    }

    async function create(data) {
        const idea = {
            id: ideas.length,
            text: data.text,
            tech: data.tech,
            viewer: data.viewer
        };

        idea.time = moment().format('h:mm:ss a');
        ideas.push(idea);
        return idea;
    }

    return {
        find,
        create
    }
})();

РЕДАКТИРОВАТЬ! Если вы хотите, чтобы этот модуль НЕ создавался при запуске этого файла, удалите ();в конце. таким образом, функция будет:

IdeaService = (function() {
});

и для создания экземпляра это будет:

let ideaService = IdeaService();
...