javascript object是最基础的键值对存储结构,键仅支持字符串或symbol类型(非字符串键自动转为字符串),值可为任意类型;支持点号和方括号两种属性访问方式,遍历推荐object.keys()或object.entries(),无内置size且不保证插入顺序。

JavaScript 中的 Object 是最基础的键值对存储方式,它用“属性名(键)”映射到“属性值”,本质是一个无序的、字符串键主导的容器。
键只能是字符串或 Symbol
你写下的任何非字符串键都会被自动转成字符串:
-
obj[42] = "hello"→ 实际键是字符串"42" -
obj[true] = "yes"→ 键变成"true" -
obj[{id:1}] = "oops"→ 所有对象都转为"[object Object]",导致覆盖 - 只有
Symbol("a")这类显式声明的 Symbol 可作唯一键,且不会被遍历到(除非用Object.getOwnPropertySymbols())
属性访问有两种语法
你可以用点号或方括号获取/设置值,但适用场景不同:
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
- 点号:
user.name—— 要求键是合法标识符,不能含空格、中划线,也不能是变量 - 方括号:
user["full name"]或user[myKey]—— 支持任意字符串键,也支持动态计算的键名
遍历需注意原型和顺序
Object 本身不提供原生迭代协议,常用方法有:
-
for...in:会遍历自身 + 原型链上所有可枚举属性(容易误读) -
Object.keys(obj):只返回自身可枚举的字符串键数组(推荐) -
Object.entries(obj):返回[key, value]数组,适合配合for...of或map() - 数字键会被特殊处理:
{1: 'a', 0: 'z', 10: 'x'}的Object.keys()结果是['0', '1', '10'](按数值升序排),不是插入顺序
没有内置 size,也不保证插入顺序
Object 没有类似 map.size 的属性,要算有多少个键得靠 Object.keys(obj).length。而且所谓“ES6 后按插入顺序”仅适用于字符串键,且在某些引擎或旧环境中仍不稳定;数字键、混合键的顺序尤其不可靠。










