javascript獲取屬性有兩種方式,點或者中括弧: 當你用第一種方式的時候,屬性必須是一個合法的變數名,如果屬性名字是 2 或者 “john smith”就行不通了,這時你只能用中括弧 obj[2]或者obj["john smith"].所以你會聯想的數組,有人說javascript裡面甚至沒有 ...
javascript獲取屬性有兩種方式,點或者中括弧:
var obj={} obj.x=1 console.log(obj.x)//1 第一種方式,x是字面量 try{ console.log(obj[x])//ReferenceError: x is not defined 相當於調用obj."undefined" }catch(e){ console.log("err:"+e) } x="str" console.log(obj[x]) x="x" console.log(obj[x])//x是一個變數,先計算出值並轉換為字元串,在獲取相應的屬性名
當你用第一種方式的時候,屬性必須是一個合法的變數名,如果屬性名字是 2 或者 “john smith”就行不通了,這時你只能用中括弧 obj[2]或者obj["john smith"].所以你會聯想的數組,有人說javascript裡面甚至沒有數組,只有屬性,因為你可以這樣定義:
arr=[] arr[0]=1 arr[2]=2
中間跳過了arr[1],如果你要取arr[1]也可以,只是會得到undefined
為什麼不像
console.log(obj[x])//ReferenceError: x is not defined 相當於調用obj."undefined"
這樣拋異常呢,因為1不是undefined,是字面量
中括弧還有個好處,就是屬性的名字可以動態的計算,比如用迴圈語句去遍歷一個對象的屬性