第一种
var ourMusic = [
  {
    "artist": "Daft Punk",
    "title": "Homework",
    "release_year": 1997,
    "formats": [ 
      "CD", 
      "Cassette", 
      "LP" ],
    "gold": true
  }
];第二种
var myObj = {
  top: "hat",                这个top和bottom没有加“”
  bottom: "pants"
};
myObj.hasOwnProperty("top");    // true
myObj.hasOwnProperty("middle"); // false请问这两种情况都是对象的属性, 但为什么第一种中的属性都加了“”
而第二种里的没有?求解!

解决方案 »

  1.   


    第一种是json格式的数据,在标准的json格式数据中属性名必须加双引号。如用JSON.parse()解析json格式的数据时不加双引号会出错。
    第二种是js代码中的对象字面量,在对象字面量中属性名如果符合js标识符的语法可以不加引号。当然加引号也是可以的。也就是说,json格式的数据可以直接放到js代码中当成对象字面量来用,但js中的对象字面量代码却不一定能直接当成json格式的数据来用。
      

  2.   

    第一种是JSON对象,不过JS里JSON对象和JS对象应该是等价的。