Javascript 关于在对象属性中保存DOM元素

Javascript 关于在对象属性中保存DOM元素,javascript,object,dom,Javascript,Object,Dom,我想创建一个UI对象,它保存对DOM对象的引用以及一些UI字符串,这样我就可以在代码中使用它,并且可以轻松地处理名称更改。有点像这样: var UI = { DOMelem0: document.getElementById('imUnique'), DOMelem1: document.getElementById('imSpecial') }; 但是,我认为每次访问DOMelem0(通过调用UI.DOMelem0),例如,我都会调用getElementById()函数,是这

我想创建一个UI对象,它保存对DOM对象的引用以及一些UI字符串,这样我就可以在代码中使用它,并且可以轻松地处理名称更改。有点像这样:

var UI = {
    DOMelem0: document.getElementById('imUnique'),
    DOMelem1: document.getElementById('imSpecial')
};
但是,我认为每次访问DOMelem0(通过调用
UI.DOMelem0
),例如,我都会调用
getElementById()
函数,是这样吗


或者,它与将元素存储在范围变量中没有什么不同吗?(类似于:
var elem=document.getElementById('cow');

我担心如果我有很多UI元素,这可能会导致任何性能问题,尽管我想它们可能是最小的。无论如何,我都不想一直调用DOM方法。
谢谢。

致电UI.DOMelem0;不会调用document.getElementById('imUnique')


document.getElementById('imUnique')仅在首次创建UI对象时调用。

“与将元素存储在范围变量中没有什么不同”很高兴听到您担心性能。这也完全无关。即使每次您引用某个属性时都会调用
getElementById
(不会),我向您保证不会对应用程序的性能产生任何可见的影响。虽然很多问题都是关于性能的,但我担心在大多数情况下,这种担心是完全错误的。让你的代码结构良好,工作正常,然后在以后进行优化。这样我就可以声明静态对象并立即按原样使用它了
UI.DOMelem0
,或者我需要用
new
关键字将其分配给变量吗?你的意思是当浏览器“编译”代码时会调用这些函数吗?对不起,我对JavaScript和编程基本上是新手。哦,我想我明白了。脚本运行时会“创建”静态对象,对吗?因为它需要立即分配您分配给属性的任何内容?就像在对象属性中声明了字符串一样。对不起,我没听懂。谢谢。我不知道你在这里所说的静态是什么意思。这里没有静电。当定义该对象的语句由javascript解释器运行时,将创建该对象的实例。UI不是类,并且其成员不是静态的。UI是一个对象的实例。当创建对象时,该实例的成员被分配它们的值。如果您相信它回答了您的问题,请考虑接受这个答案。