【问题标题】:Javascript Object to ES6 ClassesES6 类的 Javascript 对象
【发布时间】:2019-09-09 14:48:09
【问题描述】:

我有一个用对象表示法中的 vanilla javascript 编写的 javascript 插件

例子

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

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

  }
}

在这个对象表示法中,函数可以在core 中声明,即engine_part1() 和engine_part2()

是否有任何解决方法可以通过 Javascript 类实现相同的效果?

在 Javascript 类中,该类具有数据和函数,但我无法在对象表示法中编写函数,例如 core

提前致谢

【问题讨论】:

  • 您的对象符号在a=1}\ninit: 无效
  • 您根本无法将单个实例转换为类。对象表示法有什么问题?
  • @Bergi Object Notation 非常酷,但我正在尝试将其转换为 ES6 类表示法
  • @YongQuan 原谅我,我在发帖时并不关心语法。你为什么不研究我问的核心思想,而是研究语法错误
  • @CaptainAdmin 我的观点是对象和类是两个根本不同的东西,你不能用一个符号来表示另一个。

标签: javascript ecmascript-6


【解决方案1】:

只需使用class 语句来声明您的类,然后在constructor 中添加其属性,并在类主体中添加其(static)methods

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

【讨论】:

  • 非常感谢!非常感谢您花时间回答。
  • 但是我有很多这样的符号,所以我认为将所有这些都放在构造函数中并不是一个好方法
  • 不确定你想说什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-15
  • 1970-01-01
  • 1970-01-01
  • 2018-03-04
  • 1970-01-01
相关资源
最近更新 更多