对象的查询

对象的查询提供了两种方式,分别是点查询和中括号查询
  • 通过(.),右侧必须是一个以属性名称命名的简单标识符。在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}}

中括号查询法,中括号中的表达式必须返回一个字符串或返回一个可以转化为字符串的值


OOOOO
33 声望0 粉丝