JS对象和JSON的区别
最近学习javascript过程中,一直傻傻分不清JS对象的字面量写法和JSON数据,网上查了很多,在此记录一下。
JSON
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,JSON格式的数据,主要是为了跨平台交流数据用的。
JSON数据格式,其实就是一种规范,格式、形式、规范是不能用来存诸数据的。
var teacher1={
"name":"pink老师",
"age":18
};
console.log(teacher1.name)
1.JSON的属性名必须有双引号,如果值是字符串,也必须是双引号。
2.值不能是方法函数,undefined,NaN
JS对象
JavaScript 对象是拥有属性和方法的数据。
var teacher2={
name:'pink老师',
age:18,
show(){
alert('Hello World!')
}
};
1.JS对象的属性名不使用双引号。
2.值可以是函数,字符串,数字等等。
二者相同的地方是,看起来都是数据,而且恰巧又都是文本,都是通过键值对的方式存储,都可以使用点号来调用;不同的地方在于,JS字面量的文本是被脚本引擎直接解析的,而JSON的文本,如果要转化为JS对象的话,是交给eval函数来处理的,那么,如何理解JSON的文本,就取决于这个函数,而不是脚本引擎,因为这2者的处理根本就不在一个层面上。
区别 | JSON | JS对象 |
---|---|---|
含义 | 仅仅是一种数据格式 | 表示类的实例 |
表现 | 1.键值对方式,键必须加双引号 2.值不能是方法函数,不能是undefined/NaN | 1.键值对方式,键不加引号 2.值可以是函数、对象、字符串、数字、boolean 等 |
相互转换 | Json转换Js对象 1.JSON.parse(JsonStr);(不兼容IE7) 2.eval("("+jsonStr+")");(兼容所有浏览器,但不安全,会执行json里面的表达式) | js对象转换Json JSON.stringify(jsObj); |