level 1
情况一:
map = new Map()
map["name"] = "Jaron"
console.log(map.size)
输出:
0
情况二:
map = new Map()
map.set("name","Jaron")
console.log(map.size)
输出:
1
问题:
1. 为什么两种情况输出的结果不一样
2. 这两种添加数据的方式有什么不同,实际开发中应该使用哪一种
2021年08月06日 12点08分
1
level 12
情况一的话map['name']应该是undefined吧,所以长度为0
2021年08月06日 14点08分
2
不是undefined
2021年08月06日 15点08分
我刚才测试了一下,发现name变成他的属性了
2021年08月06日 15点08分
但是map['name']的确可以输出他对应的值
2021年08月06日 15点08分
@🐭🐭是我呀 map['name']应该是将map作为object类型使用而不是Map吧
2021年08月06日 16点08分
level 1
上面截图说的是你这个问题,大意是,第一种是对象设置属性的方法,第二种是map设置键值对的方法,第一种方法确实使map存储了相应的属性,但是是普通的object属性,没有增加map中的键值对元素,map.size()是统计map中的键值对的,自然看不到普通的对象属性(也就是第一种方法设置的属性),所以,你要用的是map,那你当然应该用第二种方法,在map中存储普通的object属性没什么意义啊
2021年08月07日 02点08分
4
level 2
第一个是调整了map对象的属性,效果和map.name = xxxx 差不多
第二个才是正确使用map
2021年08月07日 06点08分
6
如果没name属性,那么他相当于加上了name属性是吧
2021年08月07日 07点08分
那么如果第一种方法对他本身的属性会不会改变呢,比如size
2021年08月07日 07点08分
即map["size"]这个会不会改变呢
2021年08月07日 07点08分
@🐭🐭是我呀 早期浏览会覆盖,谷歌内核的将无法被覆盖
2021年08月07日 09点08分