淺談js的對象

  JavaScript中所有變量都可以當作對象使用,除了兩個例外null和undefined。今天這裏說的對象就特指object類型,也就是其他語言裏面的字典dict,接下來講一下js中對象的定義和使用。
對象賦值:
1)定義並初始化

a = { x : 1 }  <--> a = { "x" : 1 }   <-->  a = {} a["x"] = 1  <-->   a = {} a.x = 1

  注意: 定義過程中初始化,key直接是字符串,就算你傳的是個變量名,還是會認爲是字符串。
eg :

t = 1
a = {t : 3} <--> a = ["t" = 3]  // 這裏a["t"]值爲3,  a[1] 不存在,爲undefined 

  注意:這裏的key如果沒有用”“包起來的話,必須爲合法字符串
eg :

a = { x : 1 }
b = { a.x : 2 }   // 報錯,SyntaxError: Unexpected token .,字符串時不合法,含有 .
b = { a["x"] : 2 } // 報錯,SyntaxError: Unexpected token [,字符串時不合法,含有[]

  這裏錯的原因主要是,定義初始化過程中key直接當作是字符串,而這裏的字符是不合法的

  如果key有特殊字符,這時可以用 “”包起來的話
eg:

b = { "a.x" : 2 }   // key 爲 a.x

2)先定義後賦值
  如果key要傳變量時,可以在後期賦值的時候傳(用[],不用. 用.的話,直接當作字符串)
用 [] 賦值:
eg:

a = {}
x = 1
a[x] = 4  // 這時 a[1] = 4
a[y]  // 出錯,y未定義
a["z"] = 5  // a["z"]值爲5

用 . 賦值:
eg:

a.x = 4 <--> a["x"] = 4  // 注意這裏和 a[x] = 4 的不同

讀取對象值
用 [] 獲取:
eg:

a = {x = 1}
t = "x"
console.log( a["x"] ) // 輸出結果 1
console.log( a[t] )  // 輸出結果 1
console.log( a[x] )  // 報錯,ReferenceError: x is not defined

用 .  獲取:
  獲取的時候,key爲數字的時候,用[], 不能直接用 .
eg:

a = {1 : 10}
console.log( a.1 ) // 報錯,Unexpected number
console.log( a[1] ) // 輸出結果 10

小結:</font>
  1.初始化時,key直接當作字符串
  2.後期賦值的時候,用[]時key當作正常變量讀取, 用.時key直接當作字符串
  3.獲取對象值得時候,注意key爲數字的時候,不要用.要用[]

用處:
  有些語言(例如lua)支持在初始化的時候,直接用變量當作key,而js不行。例如之前有個功能用lua實現,後面要改成js實現,但是js在對象初始化的時候就有上面的不同。
  上面這些我覺得沒必要死記硬背,畢竟只是語言的特性,不過我們得知道其中的不同,具體細節可以通過筆記來鞏固。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章