JavaScript создать динамический класс по объекту - PullRequest
0 голосов
/ 30 июня 2018

Задача: я хочу создать динамический класс по заданному объекту JSON в ES6.

После долгих чтений в веб-документах по MDN и большого количества вопросов о переполнении стека, я совершенно не понимаю, как получить эту работу.

JSON Object

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

Пока я пытался решить проблему, я понял, как создавать динамические методы получения, используя « Proxy » или « defineProperty », но как мне обращаться с конструктором ?? (

Я надеюсь, что кто-нибудь может помочь мне с подсказкой или примером. Заранее спасибо

1 Ответ

0 голосов
/ 09 июля 2018

Вы можете добавить конструктор в ваш класс, созданный 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);
...