Я работаю с HTMLElement.prototype, потому что я хочу добавить настраиваемые свойства к своим элементам для работы. Например, я настраиваю хранилище, в котором сохраняются свойства: ключи значений, связанные с ЭТИМ элементом.
Проблема в том, что при настройке свойств в HTMLElement.prototype эти свойства используются совместно со ВСЕМИ экземплярами, и это очень неправильно.
HTMLElement.prototype.storage = {};
HTMLElement.prototype.store = function(prop, val) {
this.storage[prop] = val;
}
HTMLElement.prototype.retrieve = function(prop) {
return this.storage[prop];
}
window.onload = function() {
var box = document.getElementById("box");
var box2 = document.getElementById("box2");
box.store("a", "a value");
console.log(
box2.retrieve("a")
);
}
Я ожидаю, что элемент box2 не обладает свойством "a" в своем хранилище, потому что я не установил его для ЭТОГО элемента. Вместо этого я установил его для элемента box.