物件點查詢和中括號查詢的區別

lllllllllllllll發表於2017-12-06

物件的查詢

物件的查詢提供了兩種方式,分別是點查詢和中括號查詢
  • 通過(.),右側必須是一個以屬性名稱命名的簡單識別符號。在ES3中,點運算子後的識別符號不能是保留字,如果一個物件的屬性名是保留字,則必須用方括號的形式訪問,ES5中則可以直接在點後面使用保留字,而且不能查詢以數字作為屬性名的屬性
  • 通過方括號([ ])運算子來獲取屬性的值。運算子左側應該是一個表示式,返回一個物件。方括號內必須是一個計算結果為字串的表示式,這個字串就是屬性名字 我們看下面這個問題,(想不起來在哪裡看到的了,只能記個大概)
  var a = {}
  var b = {x:1}
  var c = {x:2}
      
    a[b] = b
    a[c] = c
    a[b]==a[c]  --> true
複製程式碼

其實這題很簡單,就是考察(.)和([ ])的區別,a[b] b沒有帶雙引號,所以是個變數,指的是{x:1},而物件b轉化為字串為 => "[object Object]",所以:

a[b] = b => a{[object Object]:{x:1}} a[c] = c => a{[object Object]:{x:2}} a[b] = [object Object] a[c] = [object Object] a[b]和a[c] 查詢的是同一個物件 => a{[object Object]:{x:2}}

中括號查詢法,中括號中的表示式必須返回一個字串或返回一個可以轉化為字串的值

相關文章