Как получить аргументы конструктора класса JavaScript из экземпляра класса - PullRequest
1 голос
/ 17 октября 2019

У меня есть куча классов, которые вызываются с различным количеством аргументов:

class Square {
    height;
    width;
    constructor(height, width) {
        this.height = height;
        this.width = width;
    }
}

Экземпляры этих классов хранятся в массиве для хранения временной шкалы:

const sq = new Square(22, 23);
const history = [sq];

Я хотел бы найти способ получить arguments из конструктора классов, вот насколько я получил:

history[0].contructor.arguments 

, что приводит к ошибке:

VM448: 1 Uncaught TypeError: свойства caller, callee и arguments не могут быть доступны для функций строгого режима или объектов аргументов для их вызова по адресу: 1: 24

Я хочу получить содержимое ключевого слова arguments из конструктора (поэтому массив как объект, который имеет аргументы как высоты, так и ширины).

Я понимаю, что мог бы использовать суперкласс и расширить его ввсе классы, от которых я нуждаюсь в этой функциональности, но в идеале хотели бы избежать их изменения. Есть идеи?

1 Ответ

2 голосов
/ 17 октября 2019

Объект arguments локально ограничен функцией, которой он принадлежит. Он недоступен за пределами этой функции, если вы не передадите ее из этой функции в другом месте.

Если вы хотите узнать, какие аргументы были переданы конструктору откуда-то еще, вам нужно либо передатьих явно или конструктор хранит их где-то.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...