function createShape(shapeClass, x, y) {
// интерпретатор ругается, что shapeClass - не является конструктором! (то есть он воспринимает это не как переменную, а как имя класса!) Как исправить? (в console.log выводятся значения, всё ОК!)
var shape = new shapeClass(x, y, currentSize);
// ... код...
return shape;
}
Пример вызова:
document.addEventListener('click', function(e) {
var shape = e.target.dataset.shape;
if (shape && shapeMap.hasOwnProperty(shape)) { // передаём Класс из карты соответствий
var shape = createShape(shapeMap[shape]);
app.setCurrentShape(shape);
}
});
// карта соответствий
const shapeMap = {
circle: 'Circle',
quad: 'Quad',
triangle: 'Triangle'
};
В объекте shapeMap хранятся строки.
Строки – это объекты, а объекты не могут использоваться в качестве конструктора.
Для решения можно хранить в словаре не имена, а сами классы:
const shapeMap = {
circle: Circle,
quad: Quad,
triangle: Triangle
};
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости