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";

在控制台中查看如下:

純數字屬性名的特殊性

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

  定義實例:

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

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

  讀取的方式有兩種:

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

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

布爾屬性名的特殊性

布爾屬性名和純數字屬性名有着相似的行為,如下

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

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

如果propertyName是變量名稱(或者是表達式),則解釋器會讀取變量內容(或對表達式求值),如果變量的值是字符串,則直接讀取屬性,如果是其他類型的數據,則轉換為字符串后再讀取屬性。舉例如下:

定義對象:

定義變量:

讀取屬性:

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

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

由於c沒有初始化,所以將c轉換為字符串的結果是“undefined”,而obj存在“undefined”屬性。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM