js 中的json对象和map

来源:互联网 发布:宝宝学数字软件 编辑:程序博客网 时间:2024/04/27 18:06

json 是一种轻量级的数据交换格式。对于 js 来说,json对象就是一个普通的对象。

它规定了一种格式规范,为各种编程语言进行数据的创建交换提供了一个准则。

es6开始加入了集合的概念,大多数程序简单地用对象来存储键值就够了,对它们而言没什么必要换用Map和Set。

但是直接使用对象有一些问题:

作为查询表使用的对象,不能既支持方法又保证避免冲突。
因而,要么得用Object.create(null)而非直接写 {} ,要么得小心地避免把 Object.prototype.toString之类的内置方法名作为键来存储数据。
对象的键名总是字符串(当然, ES6 中也可以是Symbol)而不能是另一个对象
没有效的获知属性个数的方法。
ES6 中又出现了新问题:纯粹的对象不可遍历,也就是它们不能配合 for -of 循环或… 操作符等语法。

ES6中的集合是为避免用户数据与内置方法冲突而设计,所以它们不会把数据作为属性暴露出来。也就是说,obj.key 或 obj[key]不能再用来访问数据了,取而代之的是map.get(key)。

话说回来,json对象是由键值对组成的;而一个 Map对象由若干键值组成。 除了上面提到的一些集合的特性,还有其本身一些特殊的方法外,到底有没有什么容易理解的特性呢。map对象中的键值对是唯一的,这些特性可以在任何一本关于ES6的书中找到。

作为一个新人,我一直试图证明json对象存进去的数字,再取出来的时候就变成了字符串(起码我们在进行数据请求时得到的json数据会出现这些问题),于是我在浏览器的控制台输入了下面的代码:

var json = {a:1};console.log(typeof json.a);

结果得到的却是:

number

算了,本来一个是数据格式,一个是数据类型,就不必纠结二者的区别了,我们只需要谨慎的使用json对象,并且积极地使用map就行了。


本文部分内容来自深入浅出ES6

0 0