新手求助
javascript吧
全部回复
仅看楼主
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
2021年08月07日 02点08分 3
level 1
上面截图说的是你这个问题,大意是,第一种是对象设置属性的方法,第二种是map设置键值对的方法,第一种方法确实使map存储了相应的属性,但是是普通的object属性,没有增加map中的键值对元素,map.size()是统计map中的键值对的,自然看不到普通的对象属性(也就是第一种方法设置的属性),所以,你要用的是map,那你当然应该用第二种方法,在map中存储普通的object属性没什么意义啊
2021年08月07日 02点08分 4
level 1
我的翻译可能不准,你自己感受一下截图中的原文
2021年08月07日 02点08分 5
谢谢,你的意思是第一种存储变成了他的属性,第二种存储才相当于是数据是吧
2021年08月07日 03点08分
@🐭🐭是我呀 哦,我是这么理解的,原文说,第一种方法不会改变map data structure(map的数据结构,也就是你说的数据),使用的是generic object feature(普通的对象特性)
2021年08月07日 03点08分
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分
level 1
0也是一个位置
2021年08月07日 11点08分 7
1