【问题标题】:javascript create dynamic class by objectjavascript按对象创建动态类
【发布时间】:2018-06-30 01:33:51
【问题描述】:

任务:我想在 ES6 中通过给定的 JSON 对象创建一个动态类。

在阅读了 MDN 网络文档和许多 stackoverflow 问题后,我完全不知道如何完成这项工作。

JSON 对象

{
    constructor: {
        name: "someName",
    },
    getter: {
        function1: () => "someOutput",
        function2: () => false,
    }
}

当我尝试解决问题时,我想出了如何使用“Proxy”或“defineProperty”创建动态 getter 方法,但我应该如何处理构造函数? ? :(

我希望有人可以通过提示或示例帮助我。 提前致谢

【问题讨论】:

  • 为什么不改变你的后端以返回实际的 JavaScript 而不是 JSON?
  • 我无法更改我的后端 :( 我从 api 获取此对象

标签: javascript json ecmascript-6 es6-class es6-proxy


【解决方案1】:

您可以使用 Proxy 的“construct”处理程序方法将构造函数添加到由 Proxy 创建的类:

const jsonObj = {
    constructor: {
        name: "someName",
    },
    getter: {
        function1: () => "someOutput",
        function2: () => false,
    }
}


function baseClass(obj) {
  for(i in obj){
    this[i] = obj[i]

  }
}

const handler = {
  construct(target, args) {
    return new target(jsonObj.constructor);
  }
};

const NewClass = new Proxy(baseClass, handler);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    相关资源
    最近更新 更多