js 创建空对象的3种方法-object.create(null) 和 {}创建对象的区别

【前端知识之JS】Object.create和new的区别以及Object.create的实现 本系列主要整理前端面试中需要掌握的知识点。本节介绍Object.create和new的区别以及Object.create的实现。 阅读详情

创建对象的方法

  如果要创建一个空的对象,可以使用如下的三种方法

1

2

3

var obj1 = {};

var obj2 = Object.create(null);

var obj3 = new Object();

创建空对象的区别

  要创建一个干净的空对象,应该使用Object.create(null)而不是剩下两种。
  通过做Objist.create(NULL),我们显式指定NULL作为它的原型。所以它绝对没有属性,甚至没有构造函数、toString、hasOwnProperty属性,所以如果需要的话,可以在数据结构中使用这些键,而不需要通过hasOwnProperty进行判断。

var obj1 = {};

var obj2 = Object.create(null);

var obj3 = new Object();



var con1 = obj1.constructor;

var con2 = obj2.constructor;

var con3 = obj3.constructor;



console.log(con1);//ƒ Object() { [native code] }

console.log(con2);//undefined

console.log(con3);// Object() { [native code] }

实例说明

const dirtyMap = {};
const cleanMap = Object.create(null);
const key;
for(key in dirtyMap){
  // Check to avoid iterating over inherited properties.
  //不纯净的对象是需要做判断的
  if (dirtyMap.hasOwnProperty(key)) {  
    console.log(key + " -> " + dirtyMap[key]);
  }
}
 
for(key in cleanMap){
  // No need to add extra checks, as the object will always be clean
  //纯净的对象不需要做判断
  console.log(key + " -> " + cleanMap[key]);   
}

 

KV Cache 详解:新手也能理解的 LLM 推理加速技巧 (Autoregressive)生成的,即每次生成一个 token,然后将其作为输入继续生成下一个 token。:如果序列太长,超过了 KV Cache 的存储限制,就需要丢弃最早的 tokens(类似滑动窗口)。时,每次只会生成一个新 token,然后再把这个 token 作为输入继续生成下一个 token。,只缓存计算过的 K,VK, V,每次只计算新 token 的 K,VK, V,从而提升推理效率。:如果输入的 prompt 发生变化,之前的 KV Cache 不能复用,必须重新计算。 阅读详情

相关推荐

从Power到HO:一文搞懂主流脑图谱在DPABI里怎么选,让你的rs-fMRI分析更精准

本文深入解析了rs-fMRI分析中主流脑图谱(如Power、HO、AAL等)在DPABI中的科学选择策略,帮助研究者根据不同的神经科学研究目标优化分析流程。从解剖学图谱到功能连接图谱的特性对比,到DPABI实操中的多图谱分析工作流,提供了全面的方法论指导,助力提升静息态功能磁共振成像(rs-fMRI)研究的精准度和可重复性。

weixin_30654583的博客 403

object.create(null) 和 {}创建对象的区别

原文   简书原文:https://www.jianshu.com/p/43ce4d7d6151 创建对象的方法   如果要创建一个空的对象,可以使用如下的三种方法 var obj1 = {}; var obj2 = Object.create(null); var obj3 = new Object(); 创建空对象的区别   要创建一个干净的空对象,应该使用Obje...

weixin_30457065的博客 402

告别Keil?在Mac上配置STM32CubeIDE + CMSIS-DAP调试器全攻略(含常见报错解决)

本文详细介绍了在Mac平台上配置STM32CubeIDE与CMSIS-DAP调试器的全流程,包括硬件准备、软件安装、工程创建及调试优化。通过实战指南,帮助开发者高效完成STM32开发,解决常见报错问题,提升开发效率。

weixin_30485379的博客 431

JS创建对象的三种方法

在JavaScript中,对象是一组无序的相关属性和方法的集合。所有的实物都是对象,例如,字符串、数值、数组、函数等。 下面我会介绍三种创建对象的方法。 一、通过字面量创建对象 其语法格式如下: var 对象名 = {}; // 创建了一个空对象 var 对象名 = { 属性名: 属性值, // 创建了一个属性 方法名: function () { // 创建了一个方法 } } 注意点: 属性名和方法名后面跟的是冒号。 多个属性和方法之间要用逗号隔开。 例如, var obj1 = {}; /

phx2417514299的博客 9363

汽车OTA安全启动:ECU双验签机制与实战排障指南

汽车OTA升级中的安全启动,本质是基于密码学的信任建立过程,其核心在于ECU上电时对固件镜像的可信验证。该机制依托硬件信任根(Secure Boot ROM),通过RSA/ECDSA等非对称算法完成签名验签,确保升级包未被篡改且来源可信。技术价值体现在防止恶意固件注入、支撑功能安全(ASIL)与信息安全(ISO/SAE 21434)合规。典型应用场景包括4S店远程升级、BMS控制器固件更新及多ECU协同启动。实践中,验签名失败往往源于证书链断裂、Flash布局错位或KeyUsage字段不匹配等底层工程细节,

weixin_29314405的博客 75

在 Linux 虚拟机中手动安装 VMware Tools

对于 Linux 虚拟机,您可以从命令行手动安装 VMware Tools。对于 Linux 的较高发行版,请使用集成的 open-vm-tools 版本。 前提条件 有关 open-vm-tools 的操作系统兼容性的详细信息,请参见《VMware 兼容性指南》,网址为VMware Compatibility Guide - System Search。 开启虚拟机。 确认客户机操作系统正在运行。 因为 VMware Tools 安装程序是使用 Perl 编写的,请确认已在客户机操作系统中安..

m0_62526815的博客 1755

Js-对象初级

文章目录对象简介创建对象对象字面量简写属性计算的属性名 对象简介 对象是属性和方法的集合。 对象是一种复合值, 它汇聚多个值 (原始值或其他对象) 并允许我们按名字存储和获取这些值。 对象是一个属性的无序集合, 每个属性都有名字和值。 属性名通常是字符串(也可以是符号), 因此可以说对象把字符串映射为值。 在javascript中, 任何不是字符串、数值、符号或true、false、null、undefined的值都是对象。即使字符串、数组和布尔值不是对象, 但它们的行为也类似不可修改的对象。 创建对

qq_45458749的博客 1168

手把手教你用Python分析OpenFAST仿真结果:pyDatView处理.out文件与数据可视化技巧

本文详细介绍了如何使用Python中的pyDatView工具分析OpenFAST仿真结果,包括数据加载、质量检查、时域与频域分析、多工况对比及自动化报告生成。通过优化技巧和可视化方法,帮助工程师高效处理.out文件,提升风机性能分析的准确性和效率。

weixin_29311017的博客 182

【js】js中创建空对象的方法

最近学习了一下js的对象,其中创建一个空对象了解到三种方法,如下://方法一 var obj1 = {};//方法二 var obj2 = Object.create(null);//方法三 var obj3 = new Object();这两种方法都可以创建一个空对象,亲自在谷歌调试器上测试了,如下:

向着光芒的女孩 6241

【DeepSeek R1构建本地RAG知识库】数据结构化清洗-知识图谱制作、使用、dify集成

本文探讨了在构建本地RAG(Retrieval-Augmented Generation)系统时,如何通过引入知识图谱来增强系统的知识理解能力。传统的向量数据库和嵌入模型虽然能处理语义匹配,但无法有效捕捉知识间的关联性。知识图谱通过“实体-关系-属性”的结构化表示,能够更好地支持推理、推荐和多跳问答等高级功能。文章详细介绍了知识图谱的基本概念、制作思路,以及如何使用Neo4j图数据库进行知识图谱的构建和查询。通过实例展示了从PDF文件解析到知识图谱入库的全过程,强调了知识图谱在提升RAG系统性能中的重要作用

少说,多做 560

【AVRCP】规范精讲[19]: 媒体属性全解析,让你的蓝牙设备显示完整歌曲信息

AVRCP协议中的媒体属性是蓝牙音频设备传输歌曲元数据的关键,包含标题、艺术家、专辑等32位ID标识的键值对信息。规范要求字符串属性必须使用UTF-8编码,但乱码问题频发(如中文显示异常),主因是设备未遵循编码标准或使用GBK等非规范格式。常见问题包括信息不全(仅显示标题)、封面缺失(因带宽限制或格式不支持)及更新延迟(通知机制未启用)。解决方案包括强制UTF-8编码、优化封面大小(如300x300像素JPEG)、主动请求缺失属性。Android示例代码展示了通过广播接收器解析媒体属性的方法。

byte轻骑兵的技术小窝 1万+

js创建对象的三种方法

在 JavaScript 中,现阶段我们可以采用三种方式创建对象(object):

qq_73599840的博客 2502

FD.io/VPP — VPP 的实现原理解析

目录 文章目录目录VPPVPP 的关键创新技术数据报文的矢量处理标量报文处理方式I-cache miss 问题矢量数据报文处理方式标量 v.s. 矢量报文处理流程Packet Processing Graph(数据报文处理图)Packet Processing Graph 的处理流程Graph Node Plugin 机制 VPP WIKI:https://wiki.fd.io/view/VPP Docs:https://fd.io/docs/vpp/master/index.html Github:ht

烟云的计算 2589

一文搞懂Object.create()、new Object()和{}创建对象的区别

前言 有道是,万物皆对象。我们在平常的开发过程中肯定是要使用到对象的,我们创建一个对象的时候,最常用的当然是用最简单直接的字面量创建,例如let a = {}. 但是,想必大家都知道,js创建对象还有可以用new操作符或者是Object.create()方法 总结:创建对象的三种方法: 1. 字面量创建 :var obj1 = {}; 2. new操作符创建:new Object(); 3. Object.create()创建:Object.create(null); 那么,他们之间有什么

坚信万物皆可切的切图仔 3661

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

JavaScript 中 Object.create(null) 和 {} 创建的对象有什么区别?

前端的小伙伴们,上周我在改项目时遇到个特逗的bug:用`{}`存接口返回的配置项,结果调用`config.toString()`时居然返回`[object Object]`——这不是废话吗?但另一个用`Object.create(null)`存的配置,`config.toString`直接报`undefined`!当时我抓着键盘直迷糊:都是创建对象,咋差别这么大?

前端大白话 963

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

new Object()和Object.create()创建对象的区别

标题new Object() 和 Object.creat() 的区别 共同点 1.两者都是创建对象的方式 不同点 1.创建空对象的不同 1.1 new Object(null),创建的是空对象,在该对象上有继承原型链的方法和属性; 1.2 Object.creat(null),创建的是空对象,在该对象上没有继承原型链的方法和属性; 如图:上面的是1.1new Object(null),对象上面存在属性和方法;下面的是1.2 Object.creat(null),对象和原型链上不存在属性和方法; //方式

weixin_44020310的博客 822

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

new Object()和Object.create()的区别

Object.create() 创建一个新对象,使用现有的对象来提供新创建的对象的__proto__。 --MDN 语法 Object.create(proto, [propertiesObject]); 参数 proto:传递一个现在有的对象,即新对象的原型对象(新创建的对象_proto_属性指向现有属性)。第一个参数proto的值为null,那么创建出来的对象是一个{}(空对象)并且没有原型; Objecr.create({name:'lili'}); Objecr.create(null);

weixin_44761091的博客 3394

深入理解Object.create(null)与{}的区别 - 从PanJiaChen项目看对象创建最佳实践

在JavaScript开发中,创建空对象是我们经常需要进行的操作。传统上,我们会使用`const obj = {}`这样的字面量语法,但在一些优秀项目的源码中(如Vue等),我们经常会看到`Object.create(null)`这样的写法。本文将从技术原理、性能考量和使用场景等多个维度,深入分析这两种创建空对象方式的区别。 ## 两种创建方式的本质区别 ### 对象字面量语法:{} 当我们...

gitblog_00177的博客 427

Object.create(null)和{}创建对象的区别

原文:https://www.jianshu.com/p/43ce4d7d6151 创建对象的方法: 创建一个空对象有以下三个方法: var obj1 = {}; var obj2 = Object.create(null); var obj3 = new Object(); 创建空对象的区别: 要创建一个干净的空对象,应该使用Object.crea...

Sugarman0620的博客 273

关于使用Object.create(null)来创建空对象,而不直接使用{}的优势

关于使用Object.create(null)来创建空对象,而不直接使用{}的优势

weixin_44784401的博客 440

理解并区别Object.create()、new Object()和{}

多的就不扯了,先来个例子,看看new Object()和{} let objB = {}; // let objB = new Object(); objB.name = 'b'; objB.sayName = function () { console.log(`My name is ${this.name} !`); } console.log(objB) console.log(objB.__proto__ === Object.p

qq_37918241的博客 677

Object.create和{}有什么区别

Object.create和{}

混世小妲己 295

[ javascript ] 使用Object.create()创建对象

Object.create() 创建一个新对象,使用现有的对象来提供新创建的对象的__proto__。 具体文档 语法 Object.create(proto[, propertiesObject]) 参数 proto: 新创建对象的原型对象。 propertiesObject: 可选。如果没有指定为 undefined,则是要添加到新创建对象的不可枚举(默认)属性(即其自身定义的属性,而不是其原型链上的枚举属性)对象的属性描述符以及相应的属性名称。这些属性对应Object.defineProper

ljw1412的博客 517

字面量创建对象、new创建对象、Object.create(null) 创建对象

字面量创建对象 var obj = {} new创建对象步骤 创建一个新对象 将新对象的隐式原型(proto)指向原函数的显示原型(prptotype) 将this指向新对象,并执行函数,执行结果保存起来作为result 判断函数执行结果是不是null或者undefined,如果是返回之前的新对象,如果不是返回result 手写new function myNew(test, ...args) { // 创建一个空对象 let obj = { data: 1 } // 将创建对象的隐式原型

weixin_44669966的博客 480

Object.create(null)和new Object的区别

可以看到,object.create(null)造出来的object是没有任何属性的,是空的

lx583274568的专栏 2870

JavaScript进阶之浅谈Object方法

JavaScript进阶之浅谈Object方法

YXGR 518
上一篇: 如何使用Chrome DevTools调试JavaScript
下一篇: window.open()和window.showModalDialog 的使用及传值操作
shadow_zed
博客等级 码龄10年 6289粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值