Как в JS добавить свойство объекта через метод этого же объекта? Это, наверное, не должно быть сложно, но сижу битый час и не догоняю. Помогите догнать.
var attr = {
add: function(name, val) {
this.name = val;
}
};
attr.add('title', 'Title');
attr.add('href', '#');
В Итоге получаю закономерный вывод:
attr.name = '#'
Но как заставить работать ту логику за которой я гонюсь :)
attr.title = 'Title'
attr.href = '#'
Даже не знал как правильно и доходчиво составить воспрос.
Спасибо.

21 Авг 2019 в 07:10
164 +1
0
Ответы
1

Проблема здесь в том, что вместо this.name нужно использовать this[name]. Таким образом, код должен выглядеть так:

var attr = {
add: function(name, val) {
this[name] = val;
}
};
attr.add('title', 'Title');
attr.add('href', '#');
console.log(attr.title); // 'Title'
console.log(attr.href); // '#'

Теперь при вызове метода attr.add('title', 'Title') будет создаваться свойство title со значением 'Title', а при вызове attr.add('href', '#') будет создаваться свойство href со значением '#'.

20 Апр в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 588 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир