Как использовать элемент со свойством объекта, как 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
}
Другие вопросы по тегам