DOM元素应该定义为变量吗?

时间:2012-01-26 18:01:25

标签: javascript

例如,在这个对象函数中,我将元素放在一个名为Text array的变量中。然后我根据需要访问变量。但是我可以根据需要直接访问表单而不使用变量。哪种方式是最佳做法?我也可以使用documentGetElementbyId作为第三种方式。我也看到只使用[]的dot notaion访问DOM。这四个都在一起。最好的方法是什么?如果是case specefic ..那么下面的对象函数的最佳方法是什么。

var Text = function( form_name ) 
{
    this.text_array = document.forms[form_name].elements;
};

Text.prototype.patterns = 
{
    prefix_url:     /^http:\/\//,
    url:            /^.{1,2048}$/,
    tweet:          /^.{1,40}$/, 
    title:          /^.{1,32}$/, 
    name:           /^.{1,64}$/, 
    email:          /^.{1,64}@.{1,255}$/,
    pass:           /^.{6,20}$/
};

Text.prototype.checkPattern = function( type ) 
{
    return this.patterns[type].exec( this.text_array[type].value );
};

Text.prototype.checkUrlAdd = function( type ) 
{
    return this.patterns[type].exec( this.text_array.url.value );
};  

Text.prototype.checkSameEmail = function() 
{
    return ( (this.text_array.email.value) === (this.text_array.email1.value) );
};

Text.prototype.checkEmpty = function() 
{
    var element;
    for ( element in this.text_array )
    {
        if( this.text_array[element].value === '' ) 
        {
            return 0;
        }
    }
    return 1;
};

1 个答案:

答案 0 :(得分:1)

就性能而言,我们根本没有太大的差异 - 如果有的话。在JavaScript中,document是一个全局变量,就像其他任何变量一样。因此,通过document.getElementById("someID")获取元素并不需要花费太多时间,因此之前在某个时间点将该变量保存到另一个变量并使用该变量。

前:

if(document.getElementById("myID").value == something) {
    /* do something here ... */
}

不会更快/更长

var myElem = document.getElementById("myId").value
if(myElem == something) {
    /* do something here ... */
}

要记住的重要一点是代码的可读性和可用性。总是想到如果你将这些代码交给别人,他是否能够遵循它。除非你为自己做一些事情而且计划是短暂的,否则你将不得不维护/升级你所做的事情。有时可能需要花费额外的时间来编写代码,但是如果它能节省你的维护时间,那么它绝对值得。

希望这有帮助!

免责声明: 当我说不快/慢时,另一个执行是明显的。可能(这里不是100%肯定)是微秒的差异......我认为这是可以忽略不计的。