И если это список, то почему он создаётся как переменная?
И как это работает тогда?
function Menu(elem) {
this.save = function() {
alert('сохраняю');
};
this.load = function() {
alert('загружаю');
};
this.search = function() {
alert('ищу');
};
var self = this;
elem.onclick = function(e) {
var target = e.target;
var action = target.getAttribute('data-action');
if (action) {
self[action]();
}
};
}
new Menu(menu);
<div id="menu">
<button data-action="save">Сохранить</button>
<button data-action="load">Загрузить</button>
<button data-action="search">Поиск</button>
</div>
Смотрите, к св-ву/методу объекта можно обратиться двумя способами
1 - через точку ( дот нотация )
const a = {
method: (str) => alert(str),
prop: 'prop'
}
a.method(a.prop);
2 - через скобки квадратные
const a = {
method: (str) => alert(str),
prop: 'prop'
}
a['method'](a['prop']);
Раз во втором варианте используется строчка, то мы эту строку можем сохранить в переменную
const a = {
method: (str) => alert(str),
prop: 'prop'
}
const action = 'method';
a[action](a['prop']); // передали именно переменную, которая вернула нужный метод/св-во
В вашем коде как раз это и происходит, getAttribute возвращает значение атрибута в виде строки, которую мы дальше используем, что бы вызвать нужный метод объекта
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости