对象字面量{}最安全简洁,适合固定少量属性;方括号访问支持动态键和特殊字符名;属性增删改均通过赋值实现,delete慎用以免影响性能。

对象字面量是最常用也最安全的创建方式
直接用 {} 创建对象,适合属性名固定、数量不多的场景。它避免了构造函数可能带来的原型污染或 this 绑定问题,也比 new Object() 更简洁直观。
常见错误是误把逗号写成分号,或在末尾多加逗号导致旧版 IE 报错;另外属性名含空格或特殊字符时必须加引号,否则语法报错:
const user = {
name: "Alice",
"full name": "Alice Smith", // 必须加引号
age: 30
};
方括号访问适用于动态属性名和带空格/符号的键
点号(.)只能访问合法标识符形式的属性名,比如 obj.name;一旦属性名是变量、含空格、以数字开头或含特殊字符,就必须用方括号语法 obj["full name"] 或 obj[variable]。
-
obj.key等价于obj["key"],但前者不能用于obj["first name"] - 用变量作键时,只能用方括号:
const key = "age"; obj[key] - 访问不存在的属性返回
undefined,不会报错
修改属性值和添加新属性语法完全一致
JavaScript 对象是可变的,无论属性是否已存在,赋值操作都直接生效。区别只在于:已存在属性是修改,不存在则是新增。
立即学习“Java免费学习笔记(深入)”;
注意几个易错点:
- 对
undefined或null对象调用点号或方括号会抛出TypeError - 使用
Object.freeze(obj)后无法新增或修改属性(静默失败,严格模式下报错) - 属性名是字符串,即使你写
obj[123],实际也是obj["123"]
const config = { theme: "dark" };
config.theme = "light"; // 修改
config.version = "2.1"; // 新增
config["api timeout"] = 5000; // 新增,带空格的键
删除属性要用 delete,但慎用
delete obj.key 或 delete obj["key"] 可以移除属性,返回 true(即使属性不存在也返回 true)。但它会影响性能,尤其在 V8 引擎中会破坏隐藏类,导致后续属性访问变慢。
更推荐的做法是赋值为 undefined 或 null,或者用解构 + 剩余对象来“逻辑删除”:
const { password, ...safeUser } = user; // 移除 password 字段
真正需要物理删除时再用 delete,且要确认该对象后续不再高频读写。











