JavaScript 对象和 JSON 的区别
参考原文:https://blog.csdn.net/jiaojiao772992/article/details/77871785/
2.1 对象和 JSON 的区别
JSON 就是 JavaScript object notation ,JS对象表示法,是JS对象的严格子集。
区别就是引号:JSON要求所有的属性名(键)必须加 双引号“”,而JS对象实际上不要求双引号。
这就是一个标准JSON:
实际上不需要加引号也是合法的:
为什么JSON规定要加上双引号呢?
这是因为JSON是一个数据交换格式,它可以负责和PHP通信,它是HTML和PHP等等后台语言的信息交换媒介。PHP工程师可以从数据库中得到数据,组建JSON,前台通过Ajax拿到这个JSON之后,解析JSON,组建页面。
比如下图:
所以是其他语言要求JSON有引号,否则报错,不是JS要求的。JSON天生为通信而生!
但是有一种键必须加引号!就是不符合标识符命名规范的键,必须加引号,否则报错!
标识符命名规范:可以是字母、数字、下划线,但是不能以数字开头
下面是符合标识符命名规范的:
下面是不符合标识符命名规范的,必须加引号:
访问属性的时候,必须也加上引号,用方括号表示法。
特别的,如果我们用变量存储一个key,此时必须用方括号枚举,并且方括号中不能有引号:
比如小题目,alert出什么?
实际读取的是obj["2016"] //就是14,
如果alert(obj["key"]) //888,
如果alert (obj.key) //888 ,点语法只能以字符串形式访问对象中的键,key此时不是变量。
所以方括号语法相比点语法更为灵活。