Object.create(null) --> "纯净对象"

Object.create(null) 创建的对象可以被称为

纯净对象(pure object 或 dictionary object)

基本概念

Object.create(null) 会创建一个没有原型链的对象,即这个对象不会继承自 Object.prototype。

ts 复制代码
const obj = Object.create(null);

与常规对象的区别

  1. 常规对象创建:

    ts 复制代码
    const obj1 = {}; // 或 new Object()
    // 等同于
    const obj1 = Object.create(Object.prototype);

这种对象会继承 Object.prototype 的方法,如 toString(), hasOwnProperty() 等。

  1. Object.create(null)创建的对象:

    ts 复制代码
    const obj2 = Object.create(null);

这种对象完全不继承任何属性或方法,是一个真正的"空"对象。

主要特点

  1. 没有原型链:

    • Object.getPrototypeOf(obj2) 返回 null
    • 'toString' in obj2 返回 false
  2. 更纯净的对象:

    • 不会意外访问到继承的属性/方法
    • 适合用作纯粹的键值对存储
  3. 性能优势:

    • 由于没有原型链查找,属性访问可能稍微快一些
  4. 无原型污染:

    • 完全脱离原型链,不继承 Object.prototype 的任何属性/方法
    • 避免了原型属性可能带来的命名冲突
  5. 完全空白的起点:

    • 创建时对象上绝对没有任何属性 (包括 __proto__)
    • 只有开发者显式添加的属性会存在
  6. 行为可预测:

    • 不会有意外的原型方法干扰(如 toString, hasOwnProperty 等)
    • 适合作为纯粹的键值存储(类似 Map 的用途)
相关推荐
panxianren40 分钟前
Bun 1.4 的 bun test --parallel 将 4 秒的测试套件缩短到约 1 秒
java·javascript
陈随易3 小时前
bm2,Node.js 与 Bun 项目部署新选择
前端·后端·程序员
可乐鸡翅yeah_4 小时前
FFmpeg 生成 HLS 独立分片 independent‑segments 参数到底有什么用
javascript·ffmpeg·音视频·safari·m3u8
福兮说4 小时前
canvas 旋转图片的六个坑:四角被裁、Math.ceil 多出 1px 黑边、JPG 角发黑、翻转方向反了
前端·javascript·图像处理·canvas
Ai-_Man5 小时前
您您这可以把Grok的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。AI导出鸭
javascript·人工智能·ai·小程序·电脑
传人once5 小时前
多图片上传预览功能如何写
前端·css·html·jquery·html5
Eric.466 小时前
Wan‑Animate+MiniMax-H3 本地部署 AI 漫剧流水线:8G 显存动作迁移与动态分镜工程实战
前端·人工智能·comfyui·ai漫剧
liangshanbo12156 小时前
JavaScript 异步核心主线
javascript·事件循环·异步操作
传人once7 小时前
悬停旋转放大和位移效果如何写
javascript·css·动画
库拉镜像AI牛牛7 小时前
短剧内容自动化生产:知漫剧工作室落地教程
大数据·服务器·前端·人工智能·语音识别