javaScript对象常用字面量创建,访问属性时点号适用于合法标识符,方括号支持动态名、空格及特殊字符;访问不存在属性返回undefined,嵌套需用可选链防错。

javascript对象可以用多种方式创建,访问属性也有点号和方括号两种常用写法,关键看属性名是否合法、是否动态。
创建对象的常见方式
最常用的是对象字面量,简洁直观:
- 字面量方式:
const obj = { name: "Alice", age: 25 }; - 构造函数方式:
const obj = new Object(); obj.name = "Alice"; - Object.create():适合需要指定原型的对象,如
const obj = Object.create({ greet() { return "Hi"; } }); - 类(class)方式:本质是语法糖,适用于有明确结构和方法的场景:
class Person { constructor(name) { this.name = name; } }
用点号访问属性(.)
适用于属性名是合法标识符(字母、数字、下划线、美元符开头,不以数字开头,不含空格或特殊符号):
-
obj.name→ 返回"Alice" -
obj.age→ 返回25 - 不能用于
obj.first name或obj.2ndItem,会报语法错误
用方括号访问属性([])
更灵活,支持动态属性名、含空格/特殊字符/变量的属性:
立即学习“Java免费学习笔记(深入)”;
-
obj["name"]等价于obj.name -
obj["first name"]→ 正确访问带空格的属性 -
obj[2]→ 访问类似数组索引的属性(对象属性名总是字符串,2会被自动转为"2") -
const key = "age"; obj[key]→ 动态读取,适合循环或配置驱动场景
注意属性访问的边界情况
访问不存在的属性不会报错,而是返回 undefined:
-
obj.height→undefined(不是错误) - 嵌套访问需防报错,比如
obj.user?.name(可选链)或先判断obj.user && obj.user.name - 属性名是字符串,所以
obj[1]和obj["1"]是一回事
基本上就这些。创建看需求,访问看命名和灵活性——静态用点号,动态或特殊名用方括号。