JavaScript对象是存储键值对的无序、可变、动态集合,用于表示实体或数据结构;键为字符串/Symbol,值可为任意类型;创建方式包括字面量、构造函数和Object.create();支持点语法和方括号语法访问属性,可用delete删除,常用hasOwnProperty()、in操作符及Object.keys/values/entries遍历。

JavaScript 对象是存储键值对(key-value)的集合,用来表示现实中的实体或抽象的数据结构,比如用户信息、配置项、DOM 元素等。它不是类的实例(ES6 之前没有 class),而是一种无序、可变、动态的容器。
对象的基本特征
每个属性由一个字符串(或 Symbol)类型的键和任意类型的值组成。键可以是数字、字符串或 Symbol;值可以是原始值(如字符串、数字)、函数(称为方法)、其他对象,甚至 undefined 或 null。
创建对象的几种常见方式
字面量方式(最常用):
直接用花括号 {} 定义,适合快速创建简单对象。
构造函数方式:
使用 new Object(),语义明确但写法冗长,日常较少用。
car.brand = "Toyota";
car.year = 2022;
Object.create() 方式:
用于指定原型对象,常用于实现继承或定制原型链。
const dog = Object.create(animal);
dog.barks = true; // dog 继承 eats,自身有 barks
访问和修改对象属性
- 点语法(
.):适用于键名是合法标识符(如user.name),不能用变量或含特殊字符的键名 - 方括号语法(
[]):更灵活,支持动态键名,例如obj[keyName]、obj["first name"]、obj[123] - 新增属性:直接赋值即可,如
obj.newProp = "value"或obj["newProp"] = "value" - 删除属性:用
delete obj.key,注意这会完全移除该键值对
检查与遍历对象
判断属性是否存在:
- obj.hasOwnProperty("key"):只检查自身属性(不含原型链)
- "key" in obj:检查自身 + 原型链上的所有可枚举属性
- obj.key !== undefined 不可靠(因为值本身可能是 undefined)
常用遍历方法:
-
for...in:遍历所有可枚举的自身+原型属性(通常配合hasOwnProperty过滤) -
Object.keys(obj):返回自身可枚举属性的键数组 -
Object.values(obj):返回自身可枚举属性的值数组 -
Object.entries(obj):返回键值对二维数组,适合for...of遍历











