前端对象中的对象[ 属性名 ] 和 对象.属性名的不同之处

文章标签: js对象
297

很多人可能不知道对象[ 属性名 ] 和 对象.属性名的不同之处,那这里就来讲解一下

首先我们来看一下一下代码

  • 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]是直接可以访问到对象中对象的值

还能输出{{restrictNumber}}个字符  
  • {{reply.author}}

    {{CommonUtil.formateDate(reply.ac_CommentDate).shortTime}}
  • 回复了{{Comments.author}} :