中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁 > 技術文檔 > 網頁制作 > 如何編寫高質量的Javascript代碼
Script 元素 type 屬性的妙用 回到列表 介紹27款經典的CSS框架
 如何編寫高質量的Javascript代碼

作者:rockux 時間: 2011-03-04 文檔類型:翻譯 來自:rockux

第 1 頁 如何編寫高質量的Javascript代碼 [1]
第 2 頁 如何編寫高質量的Javascript代碼 [2]
第 3 頁 如何編寫高質量的Javascript代碼 [3]
第 4 頁 如何編寫高質量的Javascript代碼 [4]
第 5 頁 如何編寫高質量的Javascript代碼 [5]
第 6 頁 如何編寫高質量的Javascript代碼 [6]
第 7 頁 如何編寫高質量的Javascript代碼 [7]
第 8 頁 如何編寫高質量的Javascript代碼 [8]
第 9 頁 如何編寫高質量的Javascript代碼 [9]

for-in循環(huán)

for-in循環(huán)用來迭代非數組的對象。使用for-in循環(huán)通常也成為枚舉。

從技術上來說,你也可以用for-in來循環(huán)數組,因為數組也是對象,但是不推薦。如果數組有一些自定義的擴展函數,那么就會出錯。另外,對象屬性的順序在for-in循環(huán)中也是不確定的。所以最好還是用普通的循環(huán)來循環(huán)數組用for-in來循環(huán)對象。

在循環(huán)對象的過程中,使用hasOwnProperty()方法來檢驗是對象本身的屬性還是原型鏈上的屬性很重要。

看看下面的這個例子。

// the object
var man = {
   hands: 2,
   legs: 2,
   heads: 1
};
 
// somewhere else in the code
// a method was added to all objects
if (typeof Object.prototype.clone === "undefined") {
   Object.prototype.clone = function () {};
}

在這個例子中,我們有一個簡單的稱作man的對象字面量。在其他man定義之前或之后的地方,對象原型有一個很有用的clone()方法。因為原型鏈的原因,所有的對象都自動獲得了這個方法。為了在枚舉man對象的時候出現(xiàn)clone方法,你需要使用hasOwnProperty方法來區(qū)別。如果沒有區(qū)別來自原型鏈的方法,那么就會有一些意想不到的事情發(fā)生:

// 1.
// for-in loop
for (var i in man) {
   if (man.hasOwnProperty(i)) { // filter
      console.log(i, ":", man[i]);
   }
}
/* result in the console
hands : 2
legs : 2
heads : 1
*/
// 2.
// antipattern:
// for-in loop without checking hasOwnProperty()
for (var i in man) {
   console.log(i, ":", man[i]);
}
/*
result in the console
hands : 2
legs : 2
heads : 1
clone: function()
*/

另外一種使用方法如下:

for (var i in man) {
   if (Object.prototype.hasOwnProperty.call(man, i)) { // filter
      console.log(i, ":", man[i]);
   }
}

這樣寫的好處是可以防止man重新定義了hasOwnProperty方法導致的沖突。如果不想寫這么長的一串,你也可以這樣:

var i, hasOwn = Object.prototype.hasOwnProperty;
for (i in man) {
    if (hasOwn.call(man, i)) { // filter
        console.log(i, ":", man[i]);
    }
}

嚴格意義上講,不適用hasOwnProperty也不是什么錯誤。根據任務的難度和你對代碼的自信程度,你也可以不用這個直接循環(huán)。但是當你不確定的時候,最好還是使用這個方法檢測一下。

另外一種格式上的改變(不會通過jsLint的檢查),去掉for的大括號,然后把if放在同一行。這樣做的好處可以讓循環(huán)體更加突出,縮進也就少一些:

// Warning: doesn't pass JSLint
var i, hasOwn = Object.prototype.hasOwnProperty;
for (i in man) if (hasOwn.call(man, i)) { // filter
    console.log(i, ":", man[i]);
}

不要擴展內建的原型

擴展原型的構造函數,可以提供一些很強大的功能,但是有時候他太強大了。

有時候你會去擴展Object(),Array(),Fucntion()的原型方法,這樣會導致可維護性的問題,因為這會讓你的代碼的移植性變差。其他的開發(fā)人員使用你的代碼的時候,可能只需要原生的方法,并不需要額外的功能。

另外,你添加進去的方法,如果在循環(huán)的時候沒有使用hasOwnProperty方法就會被遍歷出來,這會讓人很迷惑。

所以,最好還是不要擴展基本的對象。除非是下面的情況:

  • 你確定在將來根據ECMAScript規(guī)范,瀏覽器會添加相應的原型方法,那么是可以的,你只不過是提前實現(xiàn)了這個功能。
  • 你確定的你要實現(xiàn)的方法不存在–或許有時候在代碼的其他的地方實現(xiàn)了,或者有的瀏覽器支持,這都是不行的。
  • 有非常清晰的文檔,并且與團隊成員溝通過

如果在這些情況之下,那么你就可以添加,最好是下面這種形式:

if (typeof Object.prototype.myMethod !== "function") {
   Object.prototype.myMethod = function () {
      // implementation...
   };
}

出處:rockux
責任編輯:bluehearts

上一頁 如何編寫高質量的Javascript代碼 [4] 下一頁 如何編寫高質量的Javascript代碼 [6]

◎進入論壇網頁制作、WEB標準化版塊參加討論,我還想發(fā)表評論。

相關文章 更多相關鏈接
加載 Javascript 最佳實踐
GC與JS內存泄露
HTML,CSS和JavaScript速查表
JavaScript異步方法隊列鏈
JavaScript框架比較
作者文章
網站導航設計模式指南
關鍵字搜索 常規(guī)搜索 推薦文檔
熱門搜索:CSS Fireworks 設計比賽 網頁制作 web標準 用戶體驗 UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點最新 站點最新列表
周大!熬•自然”設計大賽開啟
國際體驗設計大會7月將在京舉行
中國國防科技信息中心標志征集
云計算如何讓安全問題可控
云計算是多數企業(yè)唯一擁抱互聯(lián)網的機會
阿里行云
云手機年終巨獻,送禮標配299起
阿里巴巴CTO王堅的"云和互聯(lián)網觀"
1499元買真八核 云OS雙蛋大促
首屆COCO桌面手機主題設計大賽
欄目最新 欄目最新列表
淺談JavaScript編程語言的編碼規(guī)范
如何在illustrator中繪制臺歷
Ps簡單繪制一個可愛的鉛筆圖標
數據同步算法研究
用ps作簡單的作品展示頁面
CSS定位機制之一:普通流
25個最佳最閃亮的Eclipse開發(fā)項目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule
>> 分頁 首頁 前頁 后頁 尾頁 頁次:5/91個記錄/頁 轉到 頁 共9個記錄

藍色理想版權申明:除部分特別聲明不要轉載,或者授權我站獨家播發(fā)的文章外,大家可以自由轉載我站點的原創(chuàng)文章,但原作者和來自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來自一節(jié),自行鏈接)。文章版權歸我站和作者共有。

轉載要求:轉載之圖片、文件,鏈接請不要盜鏈到本站,且不準打上各自站點的水印,亦不能抹去我站點水印。

特別注意:本站所提供的攝影照片,插畫,設計作品,如需使用,請與原作者聯(lián)系,版權歸原作者所有,文章若有侵犯作者版權,請與我們聯(lián)系,我們將立即刪除修改。

您的評論
用戶名:  口令:
說明:輸入正確的用戶名和密碼才能參與評論。如果您不是本站會員,你可以注冊 為本站會員。
注意:文章中的鏈接、內容等需要修改的錯誤,請用報告錯誤,以利文檔及時修改。
不評分 1 2 3 4 5
注意:請不要在評論中含與內容無關的廣告鏈接,違者封ID
請您注意:
·不良評論請用報告管理員,以利管理員及時刪除。
·尊重網上道德,遵守中華人民共和國的各項有關法律法規(guī)
·承擔一切因您的行為而直接或間接導致的民事或刑事法律責任
·本站評論管理人員有權保留或刪除其管轄評論中的任意內容
·您在本站發(fā)表的作品,本站有權在網站內轉載或引用
·參與本評論即表明您已經閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評論文檔 | 報告錯誤  
專業(yè)書推薦 更多內容
網站可用性測試及優(yōu)化指南
《寫給大家看的色彩書1》
《跟我去香港》
眾妙之門—網站UI 設計之道
《Flex 4.0 RIA開發(fā)寶典》
《贏在設計》
犀利開發(fā)—jQuery內核詳解與實踐
作品集 更多內容

雜⑦雜⑧ Gold NORMANA V2