ECMAScript5――JSON拓展

匿名 (未验证) 提交于 2019-12-03 00:22:01

ES5

javascript最早是由网景公司推出的,极其简单,被很多开发者接受,逐渐流行起来,后来IE为了抢占市场微软,将IE浏览器内置在windows系统中,所以IE的市场占有率相当的高。IE脚本语言是Jscript(vbscript)

好消息是移动端基本都是webkit内核,因此我们可以放心的使用html5,css3,ES5规范等等

在pc端,由于高级浏览器都实现了html5,css3,ES5规范等等,所以我们可以直接用高级浏览器测试它们

ES规范版本 ES1, ES2, ES3, ES4, ES3.1, ES5, ES6, ES2016, ES2017, ES2018

ES5跟ES3区别不是很大。

只是在ES3基础上新增了一些数组的方法和对象的拓展。


JSON拓展

ES5为了json字符串和JS对象互相转换, 新增了JSON内置对象。

该对象有两种方法: parsestringify

该方法用于将JSON字符串转为JSON对象

使用方式:

JSON.parse( jsonStr , reviver( key , value ){

参数:

必需,一个有效的 JSON 字符串

reviver可选,一个转换结果的函数, 将为对象的每个成员调用此函数

返回值:json字符串转换为的JS对象

注意:

JSON 不能存储 Date 对象。需要存储 Date 对象,需要将其转换为字符串,之后解析数据再将字符串转换为 Date 对象。

JSON 不允许包含函数,但可以将函数作为字符串存储,之后再将字符串转换为函数。不建议在 JSON 中使用函数。

reviver参数注意点:

reviverreviverthisreviverreviverundefined,则当前属性会从所属对象中删除,如果返回了其他值,则返回的值会成为当前属性新的属性值。

reviver""this{"": 修改过的解析值}reviver

JSON.parse('{"1": 1, "2": 2,"3": {"4": 4, "5": {"6": 6}}}', function (k, v) {     console.log(k); // 输出当前的属性名,从而得知遍历顺序是从内向外的,                     // 最后一个属性名会是个空字符串。     return v;       // 返回原始属性值,相当于没有传递 reviver 参数。 });
<!DOCTYPE html> <html lang="en"> <head> 	<meta charset="UTF-8"> 	<title>Document</title> </head> <body> 	<script type="text/javascript"> 		// 定义json字符串 		var str = '{"a": 1, "b": "2", "c": {"d": 3}}' 		// 转为对象 		var obj = JSON.parse(str, function(key, value) { 			// this指向是 转化成的json对象 			// arguments里面有两个值,是每一个键值对的key value 			console.log(this, arguments) 			// 把所有的字符串转为数字 			if (typeof value === "string") { 				// 转为数字 				// 一元加运算符  对于数字进行自增 对于非数字进行类型转化成number 相当于Number() 				return +value; 			} 			return value; 		}); 	</script> </body> </html>

该方法用于将JSON对象תΪJSON字符串

使用方式:

JSON.stringify( json , replacer ,space)

参数:

必需, 要转换的 JavaScript 值(通常为json对象或数组)

  • , 转换成相应的字符串被添加入JSON字符串。
  • String, 该字符串作为属性值被添加入JSON。
  • Boolean
  • 如果返回任何其他对象,该对象递归地序列化成JSON字符串,对每个属性调用replacer方法。除非该对象是一个函数,这种情况将不会被序列化成JSON字符串。
  • 如果返回undefined,该属性值不会在JSON字符串中输出。

space:


返回值:返回包含 JSON 文本的字符串

<!DOCTYPE html> <html lang="en"> <head> 	<meta charset="UTF-8"> 	<title>Document</title> </head> <body> 	<script type="text/javascript"> 		// 定义js对象 		var obj = { 			a: 1, 			b: "2", 			c: { 				d: 3 			} 		} 		// 将对象转为字符串 		var str = JSON.stringify(obj, function(key, value) { 			// this指向是 转化成的json对象 			// arguments里面有两个值,是每一个键值对的key value 			console.log(this, arguments) 			// 将字符串转为数字 			if (typeof value === "string") { 				return +value 			} 			return value 		})  		// console.log(str) 	</script> </body> </html>
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!