Object通过属性名与属性值映射存储键值对,键仅限字符串或Symbol,其他类型自动转字符串;支持点语法、方括号、解构赋值;数字键升序前置,字符串键按插入序;Symbol键私有不可枚举。

Object 对象在 JavaScript 中通过**属性名(键)与属性值(值)的映射关系**来存储键值对数据,底层依赖哈希表机制实现快速查找,但对外表现为动态、无序、可增删改查的键值集合。
键的类型与自动转换
Object 的键只能是字符串或 Symbol 类型。如果使用其他类型(如数字、布尔值、对象等)作为键,JavaScript 会自动调用 toString() 方法转为字符串:
- obj[1] 和 obj["1"] 指向同一个属性
- obj[true] 实际存为 obj["true"]
- obj[{}] 变成 obj["[object Object]"],容易覆盖
常见赋值与访问方式
支持点语法、方括号语法和解构赋值等多种操作:
将后端 Java 接口文档转换为前端 TypeScript 类型定义(interface / type)。输入:飞书文档、Spring Boot 接口文档、Swagger/OpenAPI、手写 API 文档等。输出:包含请求参数与响应结果的 .md 文件,含完整 JSDoc 注释。触发关键词:Java 转 TS、接口转换、生成前端类型、接口文档转 TypeScript、DTO/VO/BO 转 interface、后端文档转前端类型、生成接口类型、类型定义生成。
- 点语法:obj.name = "Alice"(仅适用于合法标识符键名)
- 方括号:obj["first name"] = "Bob"(支持空格、特殊字符、变量)
- 解构:const { age, city } = obj(从对象中提取值)
内部存储不是严格有序,但有遍历规则
Object 本身不保证插入顺序,但现代引擎(V8 等)对字符串键按插入顺序维护;数字索引键会被单独排序并前置:
- obj = { 2: "b", 1: "a", c: "C", 0: "z" }
- Object.keys(obj) → ["0", "1", "2", "c"](数字键升序 + 字符串键插入序)
Symbol 键提供唯一且不可枚举的私有属性
Symbol 作为键不会被 for...in、Object.keys() 或 JSON.stringify() 捕获,适合定义内部属性:
- const id = Symbol("id"); obj[id] = 123;
- Object.getOwnPropertySymbols(obj) 可获取所有 Symbol 键
不复杂但容易忽略细节
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










