首页 > 解决方案 > javascript按对象创建动态类

问题描述

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

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

JSON 对象

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

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

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

标签: javascriptjsonecmascript-6es6-classes6-proxy

解决方案


您可以使用 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);

推荐阅读