首页 > 解决方案 > 将类转换为函数

问题描述

我正在制作一个实时应用程序,并希望将此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 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;

 }

}

标签: javascriptclassmomentjsfeathersjs

解决方案


尝试这个

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();

推荐阅读