javascript對象屬性的命名規則

 

JS標識符的命名規則,即變量的命名規則:

  • 標識符只能由字母、數字、下劃線和‘$’組成
  • 數字不能夠做爲標識符的首字符

對象屬性的命名規則

  • 經過[]操做符爲對象添加屬性時,屬性名稱能夠是任何字符串(包括只包含空格的字符串和空字符串);
  • 經過.操做符爲對象添加屬性時,屬性名稱必須是合法的標識符名稱;
  • 若是屬性名包含非法的標識符字符,則只能採用obj[「propertyName」]的形式;
  • 若是屬性名是合法的標識符,讀取時便可以採用obj.propertyName,也能夠採用obj[「propertyName」]的形式;

舉例:瀏覽器

var obj = new Object();
obj["home addr"]="Tianjin";
obj["!@#$%"]="!@#$%";
obj[""]="empty string";
obj[" "]="string contains only space";

在控制檯中查看以下:spa

純數字屬性名的特殊性

  純數字屬性名的使用比較特殊,能夠經過對象字面量和obj[number]的形式爲對象添加純數字屬性,解釋器會自動將數字轉換爲數字字符串。code

  定義實例:對象

var obj = {1:"first"}
obj[2]="second";
obj["3"]="third";

  以上三種爲對象添加純數字屬性的方法是等效的,控制檯查看以下:blog

  讀取的方式有兩種:字符串

  • obj[number]
  • obj["number"]

  須要注意,採用obj.number的方式讀取純數字屬性名稱時瀏覽器會報錯,以下string

布爾屬性名的特殊性

布爾屬性名和純數字屬性名有着類似的行爲,以下class

採用[]操做符讀取對象屬性時,js解釋器執行的動做

採用obj[propertyName]的形式讀取或建立對象屬性時,解釋器首先會檢查propertyName是值類型字面量仍是用戶定義的變量,若是propertyName是值類型的字面量,則解釋器自動將其轉換爲字符串後再讀取或建立屬性,如obj[1],obj[true]會被轉換成obj["1"]、obj["true"].變量

若是propertyName是變量名稱(或者是表達式),則解釋器會讀取變量內容(或對錶達式求值),若是變量的值是字符串,則直接讀取屬性,若是是其餘類型的數據,則轉換爲字符串後再讀取屬性。舉例以下:方法

定義對象:

定義變量:

讀取屬性:

更特殊的,爲obj添加undefined屬性:

使用未初始化的變量c讀取obj的undefined屬性:

因爲c沒有初始化,因此將c轉換爲字符串的結果是「undefined」,而obj存在「undefined」屬性。

相關文章
相關標籤/搜索