当前位置: 首页 > news >正文

JavaScript Object 操作方法及 API

一、对象创建方式

1.字面量创建(最常用)

const obj = { name: "张三", age: 25 };

2.构造函数创建

const obj = new Object();
obj.name = "李四";

3.Object.create()(指定原型)

const proto = { greet: () => "Hello" };
const obj = Object.create(proto); // obj继承proto

二、核心 API 详解

1.属性操作

  • 添加/修改属性:

obj.city = "北京"; // 直接赋值
  • 删除属性:
delete obj.age; // 删除age属性

2.Object.assign()(浅拷贝合并对象)

const target = { a: 1 };
const source = { b: 2 };
Object.assign(target, source); // { a:1, b:2 }

3.遍历方法

  • Object.keys(obj):返回键数组
Object.keys({x:3, y:4}); // ["x", "y"]
  • Object.values(obj):返回值数组

  • Object.entries(obj):返回键值对二维数组

Object.entries({x:3, y:4}); // [["x",3], ["y",4]]

4.Object.fromEntries()(键值对转对象)

const entries = [["x", 3], ["y", 4]];
Object.fromEntries(entries); // {x:3, y:4}

5.属性描述符操作

  • 定义属性特性:
Object.defineProperty(obj, "id", {value: 1001,writable: false, // 不可修改enumerable: true // 可遍历
});
  • 获取描述符:
Object.getOwnPropertyDescriptor(obj, "id");

三、关键特性总结

1.键名类型

  • 仅支持 字符串Symbol 类型(与 Map 的核心区别)
const key = Symbol("secret");
obj[key] = "值";

2.无序性

  • 属性遍历顺序不固定(与 Map 有序性相反)

3.原型链

  • 所有对象默认继承 Object.prototype

  • 检查原型链:

console.log(obj instanceof Object); // true

4.与 Map 的对比

特性ObjectMap
键类型字符串/Symbol任意类型
顺序保证❌ 无序✅ 有序
专用遍历方法✅ keys()/values()
性能读取快频繁增删快

四、最佳实践场景

  1. 适合 Object 的场景

    • 结构化固定数据(如配置项)

    • 需要 JSON 序列化的数据

    • 简单键值存储(键为字符串时)

  2. 优先选 Map 的场景

    • 键为复杂类型(如对象)

    • 需要严格维护插入顺序

    • 高频增删键值对

http://www.dtcms.com/a/346453.html

相关文章:

  • GEO优化专家孟庆涛发布:《GEO内容优化的四大黄金标准》
  • 20250822 组题总结
  • 车辆方向数据集 - 物体检测
  • 深度学习:入门简介
  • 本地部署DeepSeek实战
  • 工作后的总结和反思1
  • Huggingface入门实践 Audio-NLP 语音-文字模型调用(一)
  • FPGA 在情绪识别领域的护理应用(四)
  • 【电子通识】芯片生产考验“三重门”之CP、FT与WAT测试
  • Excel表格指定数据读取写入到另一个Excel表中(指定列指定行)
  • 使用配置文件恢复开启Telnet端口(IndivKey方式)
  • 20250822给荣品RD-RK3588开发板刷Rockchip原厂的Android14时点亮荣品的8寸屏
  • 情绪感知+低延迟,声网语音在实战里太稳了
  • WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析八
  • Mixture of Experts Guided by Gaussian Splatters Matters
  • Python 调用 sora_image模型 API 实现图片生成与垫图
  • 判断一个字母是 ​大写字母​ 还是 ​小写字母
  • [RestGPT] OpenAPI规范(OAS)
  • 容器安全实践(一):概念篇 - 从“想当然”到“真相”
  • Go语言延迟初始化(Lazy Initialization)最佳实践指南
  • 通过构建大规模动态神经回路模型,揭示了静息态人脑皮层存在层次结构
  • JCTools 并发无锁链表队列 LinkedQueue
  • 洛谷P3370字符串哈希(集合:Hash表)
  • Ubuntu解决makefile交叉编译的问题
  • 提升用户体验的交互设计实战指南:方法、流程与技巧
  • 在通义灵码中配置MCP服务
  • Linux--进程核心概念
  • 基于SamGeo模型和地图客户端的实时图形边界提取
  • 把 AI 变成「会思考的路灯」——基于自学习能耗模型的智慧路灯杆
  • Open3d:点对点ICP配准,点对面ICP配准