例如,在这个对象函数中,我将元素放在一个名为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;
};
答案 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%肯定)是微秒的差异......我认为这是可以忽略不计的。