点符号与括号表示法

时间:2016-02-08 13:59:42

标签: javascript json ajax

我有这个JavaScript函数:

function test() {
  var xhr = new XMLHttpRequest();
  xhr.onreadystatechange = function() {
    if (xhr.readyState==4 && xhr.status==200) {
      var obj = JSON.parse(xhr.responseText);
      document.title = obj.page_title;
    }
  }
  xhr.open("GET", "title.php", true); xhr.send();
}

我的问题是:有什么区别: obj.page_titleobj["page_title"] 他们都对我很好,并返回相同的价值。

2 个答案:

答案 0 :(得分:1)

两者是相同的:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects

如果要使用变量,括号选项很有用:

 1.  Group1.1
      1. Group2.1
         1. Group3.1
              1.ItemDetails1
              2.ItemDetails2
         2. Group3.2
              1.ItemDetails3
              2.ItemDetails4
      2. Group 2.2
          1. Group3.3
              1.ItemDetails5
              2.ItemDetails6
          2. Group3.4
              1.ItemDetails7
              2.ItemDetails8
   2.Group1.2

或者如果您的属性名称中包含空格等异常字符:

var key = 'page_title';
obj[key];

答案 1 :(得分:-1)

唯一区别在于您使用的是带有空格的密钥,或者密钥存储在变量中。

这不起作用

obj.i have a space = "foobar";

但这会

obg['i have a space'] = "foobar";

如果您的密钥存储在变量中,则此括号表示法优于点表示法。



var o = {
  foo: bar,
  hello: world
}


for(var key in o){
  console.log(o[key]);  
}