如何将元素与对象 属性 一起使用,例如 element.myobj.prop
How to use element with object property like 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
或类似的任何东西来将我的 属性 与动态给定的节点一起使用。
note:clientWidth 道具。只是一个例子来阐明它将在我的代码中替换为我自己的属性。
您似乎想要延长 HTMLElement
。正确的方法是将您的方法添加到 HTMLElement
的 prototype
。
例如(我没有使用您的原始功能代码,因为它试图实现的目标非常模糊):
HTMLElement.prototype.getMyWidth = function() {
return this.clientWidth;
};
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 returns 对象:
{
element: DOMElement
width: 100
}
如果我声明一个像
这样的对象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
或类似的任何东西来将我的 属性 与动态给定的节点一起使用。
note:clientWidth 道具。只是一个例子来阐明它将在我的代码中替换为我自己的属性。
您似乎想要延长 HTMLElement
。正确的方法是将您的方法添加到 HTMLElement
的 prototype
。
例如(我没有使用您的原始功能代码,因为它试图实现的目标非常模糊):
HTMLElement.prototype.getMyWidth = function() {
return this.clientWidth;
};
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 returns 对象:
{
element: DOMElement
width: 100
}