很多人可能不知道对象[ 属性名 ] 和 对象.属性名的不同之处,那这里就来讲解一下
首先我们来看一下一下代码
- let obj = {
- name:"张三",
- age:18
- }
- console.log(obj.name);//张三
- console.log(obj['name']);//张三
以上代码输出张三,这个都没有疑问吧
接下来我们来看看一下代码
- for (let key in obj) {
- console.log(key);//这里会输出每个key----name和age
- console.log(obj.key);//这里会输出两个undefined
- console.log(obj[key]);//这里会输出name对应的张三和age对应的18
- }
我们主要来讲一下为什么第二个输出会输出undefined
虽然我们上面输出了name和age,但是在obj.key中,它会直接去寻找obj这个对象,看obj对象中是否有obj.key这个属性,如果没有的话那么会先声明,声明之后没有值,所以会打印undefined,而如果是以obj[key]这种方式来书写的话,那么它会去访问obj对象的key值对应的属性值
总而言之,obj.key是一个新的属性,key是obj中的一个属性,而不是for循环遍历出来的key值,而obj[key]是直接可以访问到对象中对象的值