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