js 中的json对象和map

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值