JavaScript最佳实践

原帖:http://www.javascripttoolbox.com/bestpractices/
翻译:http://wenku.baidu.com/view/d7313100763231126fdb1102.html

JavaScript中对象属性主要有两种访问方式:点号运算符和中括号运算符。它们的语法如下所示:

点号

MyObject.property

中括号

MyObvject['property']


使用点号运算符,属性名称是固定的,不能够在运行时改变;而相对地若使用中括号运算符,属性名可以是一个固定的属性名,或者是一个变量,甚至是一个返回字符串属性名的函数调用。

如果对象拥有属性"value1", "value2", "value3”, 而你想通过一个整数变量i(例如i=2)来确定访问具体的某个属性:


正确的做法

MyObject["value"+i]


错误的做法

MyObject.value+i


有时在一些服务端环境中(如PHP、Struts等等),表单字段名称后面会追加"[]",表明该字段应该被当成一个数组来处理。然而在客户端环境 下,点号运算符访问带有"[]"的属性名是不合法的,这种情况下会抛出"Synatax error"的异常,原因是在JavaScript中"[]"是用来引用一个数组元素。在这种情况下,必须使用中括号运算符。


正确的做法

formref.elements["name[]"]


错误的做法

formref.elements.name[]


建议在必须使用中括号运算符的场合,一定要使用它,而在某些非必须场合,可以按个人的喜好和编程风格选择是否使用。一个好的经验原则是,访问对象的标准属性的时候使用点号运算符,而访问页面中定义的属性时则使用括号运算符。因此,虽然document["getElementById"]()也是合法的,但最好还是使用document.getElementById这种语法来访问,因为getElementById是在DOM规范中定义的document对象的标准属性。混合使用这两种运算符来访问对象的属性,可以清楚地区分哪个属性是标准定义的,哪个属性是页面内容中定义的:

 document.forms["myformname"].elements["myinput"].value

在这里,forms是document对象的标准属性,而表单名称myformname是在页面中定义的。类似地,elements和value是规范中标准定义的属性,而myinput同样是页面中定义的属性名称。这种语法非常清楚并且容易理解,是一种推荐遵循的风格,但并非是严格的原则。


你可能感兴趣的:(JavaScript最佳实践)