Почему интерпретатор javascript не передаёт значение переменной?

143
28 июня 2018, 15:00
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' 
}; 
Answer 1

В объекте shapeMap хранятся строки.

Строки – это объекты, а объекты не могут использоваться в качестве конструктора.

Для решения можно хранить в словаре не имена, а сами классы:

const shapeMap = { 
    circle: Circle, 
    quad: Quad, 
    triangle: Triangle 
}; 
READ ALSO
В userscript не срабатывает функция jQuery load()

В userscript не срабатывает функция jQuery load()

Пытаюсь создать свой первый userscript (Chrome + Violentmonkey)

186
Защита от флуда на JS

Защита от флуда на JS

пишу на телеграмм ботаХочу реализовать функцию защита от флуда

165
Как заполнить поля формы данными из массива?

Как заполнить поля формы данными из массива?

Есть форма и массивКак сделать, чтобы по щелчку по кнопке заполнилась форма соответственно ключам?

174
Событие onclick JS

Событие onclick JS

Говорю сразу - JS изучаю совсем недавно, ошибка может быть очень глупой Не работает событие onclick Фрагмент кода HTML:

144