Как использовать элемент со свойством объекта, как element.myobj.prop
Если я объявлю объект как
var obj =function(element){
return{
wide:element.clientWidth
}}
Я должен объявить это как
var fdiv=new obj(document.etc.etc.);
и звоните как
fdiv.wide;
Но это довольно ограничивает мой код. Я должен объявить новый объект для каждого элемента. У меня вопрос, как я могу установить имя элемента динамически, чтобы иметь возможность использовать как nodeI_want.obj.wide
или же obj.nodeI_want.wide
или что-нибудь подобное, чтобы использовать мое свойство с динамически заданным узлом. примечание:clientWidth prop. Это всего лишь пример, поясняющий, что он будет заменен в моем коде моими собственными свойствами.
2 ответа
Вы, кажется, хотите продлить HTMLElement
, Правильный способ сделать это, добавив ваш метод в prototype
из HTMLElement
,
Например (я не использовал ваш исходный код функции, потому что он довольно расплывчат в том, чего пытался достичь):
HTMLElement.prototype.getMyWidth = function() {
return this.clientWidth;
};
Смотрите HTMLElement
function ElementObj(element){
this.element = element;
this.width = this.element.offsetWidth;
return this;
}
Теперь вы можете сделать:
var elem1 = new ElementObj(document.getElementById('div1'));
var elem2 = new ElementObj(document.getElementById('div2'));
Где elem1 возвращает объект:
{
element: DOMElement
width: 100
}