9. 避免 document.all
document.all 是由Microsoft 的 IE 所引進的,并不是一個標準的 Javascript DOM 特性。盡管大多數(shù)新的瀏覽器支持它以支持依賴于它的糟糕代碼,(而)還有很多瀏覽器是不支持的。
并沒有理由其他方法都不適用,而一個老的IE瀏覽器(<5.0)需要支持,而在Javascript中使用 document.all 作為一個折衷方法。 你并不需要使用 document.all 來檢測其是不是IE瀏覽器,因為其他瀏覽器現(xiàn)在一般都支持。
只把 document.all 當做最后的選擇:
if (document.getElementById) { var obj = document.getElementById("myId"); } else if (document.all) { var obj = document.all("myId"); }
一些使用 document.all 的原則:
- 同嘗試其他方法
- 當其作為最后的選擇
- 當需要支持 5.0 版本以下的 IE 瀏覽器
- 總是使用 “if (document.all) { }” 來查看是否支持.
10. 不要在腳本代碼塊中使用HTML注釋
在 Javascript 的舊日子(1995)里,諸如 Netscape 1.0 的一些瀏覽器并不支持或認識 <script>標簽。所以,當 Javascript 第一次被發(fā)布,需要有一個技術(shù)來讓實些代碼不被當做文本顯示于舊版瀏覽器上。有一個”hack” 是在代碼中使用 HTML 注釋來隱藏這些代碼。
使 HTML 注釋并不好:
<script language="javascript"> <!-- // code here //--> </script>
在今天,沒有任何一個常用的瀏覽器會忽略掉 <script> 標簽。因此,再沒必要隱藏 Javascript 源代碼。事實上,它還可以因為下面的理由,被認為是無益的:
- 在 XHTML 文檔中,源代碼將向所有瀏覽器隱藏并被渲染成無用的(內(nèi)容);
- 在 HTML 注釋并不允許 ,這個會讓任何遞減操作將失效。
11. 避免亂用全局命名空間
一般很少需要全部變量和函數(shù)。全局使用將可能導(dǎo)致 Javascript 源文件文檔沖突,和代碼中止。因此,一個好的做法是在一個全局命名空間內(nèi)采用函數(shù)性的封裝。有多個方法可以完成這個任務(wù),有此相對比較復(fù)雜。最簡單的方法 是創(chuàng)建一個全局對象,并把屬性和方法指派給這個對象:
創(chuàng)建一個命名空間:
var MyLib = {}; // global Object cointainer MyLib.value = 1; MyLib.increment = function() { MyLib.value++; } MyLib.show = function() { alert(MyLib.value); }
MyLib.value=6; MyLib.increment(); MyLib.show(); // alerts 7
命名空間也可以使用 Closures(閉包?) 來創(chuàng)建,并且 Private Member Variables (私有變量?) 也可以偽裝于 Javascript中。
12. 避免同步的 ‘Ajax’ 調(diào)用
當使用”Ajax”請求時,你要么選擇異步模式,要么使用同步模式。當瀏覽器行為可以繼續(xù)執(zhí)行,異步模式將請求放在后臺執(zhí)行,同步模式則會等待請求完成后才繼續(xù)。
應(yīng)該避免同步模式做出的請求。這些請求將會對用戶禁用瀏覽器,直至請求返回。一旦服務(wù)器忙,并需要一段時間來完成請求,用戶的瀏覽器(或者 OS)將不能做任何其他的事,直至請求超時。
如果你覺得自己的情況需要同步模式,最大的可能是你需要時間來重新想一下你的設(shè)計。很少(如果有的話)實際上需要同步模式的 Ajax 請求。
13. 使用 JSON
當需要將數(shù)據(jù)結(jié)構(gòu)存儲成純文本,或者通過 Ajax 發(fā)送/取回數(shù)據(jù)結(jié)構(gòu),盡可能使用 JSON 代替 XML。JSON (JavaScript Object Notation) 是一個更簡潔有效的數(shù)據(jù)存儲格式,并且不依賴任何語言(and is a language-neutral)。
14. 使用正確的 <script> 標簽
不造成在 <script> 中的使用LANGUAGE 屬性。一個合適的方式是創(chuàng)建如下的 Javascript 代碼塊:
<script type="text/javascript"> // code here </script>
本文鏈接:http://www.95time.cn/tech/web/2009/7181.asp
出處:幸福收藏夾
責任編輯:bluehearts
上一頁 14條最佳JS代碼編寫技巧 [4] 下一頁
◎進入論壇網(wǎng)頁制作、WEB標準化版塊參加討論,我還想發(fā)表評論。
|