1. 程式人生 > >JavaScript 編碼規範

JavaScript 編碼規範

邏輯 而是 fim fire 匿名函數 function click fun dom

變量命名規範:

  基本規範:變量命名都以類型前綴+有意義的單詞組成,單詞首字母都需要大寫。例如:sUserName, nCount.

 前綴規範:

  s :表示字符串。 sName, sHtml

  n : 表示數字。 nPage, nTotal

  b :表示邏輯。 bChecked

  a :表示數組。 aList

  r : 表示正則表達式。 rDomain

  f : 表示函數。 rGetHtml

  o :表示以上未涉及到的其他對象: oButton

全局變量使用g作為前綴 : gUserName

常量使用全部字母大寫: COPYRIGHT , PI

函數命名規範:

  統一使用動詞或者動詞[+名詞]形式,如:fGetVersion(), fSubmitForm(), fInit();

涉及返回邏輯值得函數可以使用 is,has等表示邏輯詞語代替動詞

如果有內部函數,使用__f+動詞[+名詞]形式,內部函數必須在函數最後定義

對象方法實現:

  對象方法命名使用f+對象類名+動詞[+名詞]形式;如 :fAddressGetEmail

事件響應函數:

  某事件響應函數命名方式為觸發事件對象名+事件名或模塊名+觸發事件對象名+事件名,如:fDivClick(),fAddressSubmitButtonClick();

定義類是通過一個閉包完成的:

(function(){
//第一步:引入存在的類。引入support類
var Support = window.Support;

//$是網易郵箱基礎庫“base”的引用稍後會介紹
//第二步:定義類。可以認為返回了一個類定義 function(){},並在window下定義一個Image類
var Image = $.createClass("Image");

//可以認為是jQuery的extend方法

//第三步:定義類屬性/方法定義
$.Object.extend(Image,{
_language : null, //內部屬性
getSize : fImageGetSize
});
//第四步:定義實例屬性/方法定義
$.Object.extend(Image.prototype,{
name : null,
url : null,
ext : null,
width : 0,
height : 0,
setName : fImageSetName,
getName : fImageGetName,
init : fImageInit
});
//第五步:方法實現

function fImageGetSize(nWidth,nHeight){
return nWidth*nHeight;
}

function fImageSetName(sName){
var oImage = this;
oImage.name = sName;
}

function fImageGetName(){
var oImage = this;
return oImage.name;
}

function fImageInit(sUrl){
var oImage = this;
oImage.url = sUrl;
oImage.ext = Support.getExt(sUrl);
oImage.width = Support.getWidth(sUrl);
oImage.height = Support.getHeight(sUrl);
}

})();



我們可以看到,這個閉包完成了以下幾件事情:

1.引入這個類需要用到的其他類。

2.定義這個類。

3.定義類的屬性和方法。

4.定義類的實例屬性和方法。

5.類和實例方法的實現。

在命名上,我們遵循了一下規則:

1.類名首個字母必需大寫,例如Image,Support等。

2.屬性名需要是有意義的名詞,首字母小寫,例如oImage.width。

3.方法名需要是有意義的動詞[+名詞],首字母小寫,例如Support.getWidth

4.如果不希望被其他方法調用,需要在屬性或者方法名前面加“_”,例如oImage._language

5.如果不希望被子類調用,需要在屬性或者方法名前加“_”,例如oImage.__fire()

這裏需要特別說明以下幾點:

1.方法的定義不是通過匿名函數來定義,而是集中在類定義的下面來實現。這樣的好處是能在最開始將類的屬性方法定義都羅列出來,便於通過源碼查看到對應屬性和方法。

2.在類/實例方法中,使用局部變量代替this。this不是一個好的玩意兒,一不小心就會被this搞暈。使用局部變量能夠盡量避免這樣的問題,也能夠在壓縮混淆的時候效果更好。

3.在實際開發過程中,每個類定義都單獨一個js實現。

除了類的定義,閉包不實現 任何其他邏輯。使用閉包能夠將很多變量約束在閉包作用域中,並且能夠在壓縮混淆中效果更好.

  

JavaScript 編碼規範