obj.name和obj[name]的区别?

111 阅读1分钟

前言

无意间看到一个问题,obj.name和obj[name]的区别?

评论区都是回答通过.name拿属性,通过[name]拿属性,觉得很有意思,还得记录一下

区别

obj.name

obj.name的原理是使用点号(.)语法,它是JavaScript中访问对象属性的常见方式。当使用点号访问属性时,JavaScript引擎会查找对象中是否存在具有指定名称的属性,并返回该属性的值。这种方式适用于已知属性名称的情况,因为在代码编写期间,我们可以直接使用点号来指定属性名

举个栗子

const obj = { name : "govi"}
console.log(obj.name) //govi

obj01.png

obj[name]

obj[name]的原理是使用方括号([])语法,它允许使用变量或表达式作为属性名。当使用方括号访问属性时,JavaScript引擎会将方括号内的内容作为一个表达式进行求值,并将结果作为属性名来查找对象中的属性。这种方式适用于需要根据动态值来访问属性的情况

举个栗子

const obj = {name:"govi"}
const per = "name"
console.log(obj[per])//govi

obj02.png

总结

  • obj.name适用于已知属性名称的情况,直接从对象中访问属性值
  • obj[name]适用于需要根据变量或表达式的值来动态访问对象属性的情况