2

如果我声明一个对象

var obj =function(element){
return{
wide:element.clientWidth
}}

我必须像这样声明它

var fdiv=new obj(document.etc.etc.);

并打电话给

fdiv.wide;

但这非常限制我的代码。我必须为每个元素声明新的 obj。我的问题是如何设置元素名称动态以便能够使用类似nodeI_want.obj.wideobj.nodeI_want.wide类似的东西来使用我的属性与动态给定的节点。注意:clientWidth 道具。只是一个示例,说明它将在我的代码中用我自己的属性替换。

4

2 回答 2

1
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
}
于 2015-04-06T18:48:35.867 回答
1

您似乎想要扩展HTMLElement. 正确的方法是将您的方法添加prototypeHTMLElement.

例如(我没有使用您的原始功能代码,因为它试图实现的目标非常模糊):

HTMLElement.prototype.getMyWidth = function() {
    return this.clientWidth;
};

请参阅HTML 元素

于 2015-04-06T18:43:57.897 回答