obj.name 和 obj[name]的区别?【前端】
当你打算放弃梦想时,告诉自己再多撑一天,一个星期,一个月,再多撑一年,你会发现,拒绝退场的结果令人惊讶。
目录
- obj.name:
- obj[name]:
- 总结:
obj.name 和 obj[name] 是两种访问对象属性的方式,它们之间的主要区别在于访问属性时的灵活性和使用场景:
obj.name:
- 这是点符号访问对象属性的方法。
- name 是一个属性名,必须是合法的 JavaScript 标识符(例如,不能包含空格或特殊字符,不能以数字开头)。
- 属性名在代码中是硬编码的,不能动态变化。
- 适用于属性名已知且符合命名规范的情况。
const obj = { name: 'Alice', age: 25 };
console.log(obj.name); // 输出: Alice
obj[name]:
- 这是方括号符号访问对象属性的方法。
- name 可以是一个字符串或一个表达式,其结果是一个字符串。
- 允许动态地使用变量来访问对象的属性。
- 适用于属性名在运行时才确定的情况,或者属性名不符合合法标识符的情况(如包含空格或特殊字符)。
const obj = { name: 'Alice', age: 25 };
const propName = 'name';
console.log(obj[propName]); // 输出: Alice
const obj2 = { 'first name': 'Bob' };
console.log(obj2['first name']); // 输出: Bob
总结:
- 点符号适用于属性名已知且符合命名规范的情况。
- 方括号符号提供了更多的灵活性,适用于需要动态访问属性名的场景或属性名不符合标识符规范的情况
- obj.name就是修改对象里面属性值的意思,而obj[name]就是增加属性名和值的意思