前言
无意间看到一个问题,obj.name和obj[name]的区别?
评论区都是回答通过.name拿属性,通过[name]拿属性,觉得很有意思,还得记录一下
区别
obj.name
obj.name的原理是使用点号(.)语法,它是JavaScript中访问对象属性的常见方式。当使用点号访问属性时,JavaScript引擎会查找对象中是否存在具有指定名称的属性,并返回该属性的值。这种方式适用于已知属性名称的情况,因为在代码编写期间,我们可以直接使用点号来指定属性名
举个栗子
const obj = { name : "govi"}
console.log(obj.name) //govi
obj[name]
obj[name]的原理是使用方括号([])语法,它允许使用变量或表达式作为属性名。当使用方括号访问属性时,JavaScript引擎会将方括号内的内容作为一个表达式进行求值,并将结果作为属性名来查找对象中的属性。这种方式适用于需要根据动态值来访问属性的情况
举个栗子
const obj = {name:"govi"}
const per = "name"
console.log(obj[per])//govi
总结
obj.name适用于已知属性名称的情况,直接从对象中访问属性值obj[name]适用于需要根据变量或表达式的值来动态访问对象属性的情况