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

news2024/11/15 14:05:48

文章目录

  • 前言
    • 1. 使用Object.create(null) 和 直接{}的区别
    • 2.子类继承父类
    • 3. 子类继承父类---进阶


前言

问题:为什么vue源码中使用Object.create(null)来创建空对象,而不直接使用{}???
在这里插入图片描述


1. 使用Object.create(null) 和 直接{}的区别

优势:使用 create 创建的对象,没有任何属性,显示 No properties,我们可以把它当作一个非常纯净的 map 来使用,我们可以自己定义 hasOwnProperty、isPrototypeOf
、toLocaleString、toString 方法,不管是有意还是不小心,我们完全不必担心会将原型链上的同名方法覆盖掉

let a = {
    'name': '张三'
}
let b = Object.create(null) // {}  无属性
let c = {} // {} 有属性

在这里插入图片描述

2.子类继承父类

简单理解mdn上面的demo,你可以理解为d继承了a,也就是类式继承

let a = {
    'name': '张三'
}
let d = Object.create(a) // {name: '张三'} 继承父类

在这里插入图片描述

3. 子类继承父类—进阶

let a = {
    'name': '张三'
}
let d = Object.create(a) // {name: '张三'} 继承父类
let e = Object.create(Object.prototype,{    
	a:{
		value: a,
		enumerable: false, // 对象的属性是否可以通过for...in循环被遍历
    writable: true, // 是否可以修改value属性的值
    configurable: true, // 是否阻止某些操作改写该属性(是否可以修改删除值)    
	}
})

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2073804.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt:玩转QPainter序列四

前言 接着干源码 正文 先看源码,然后我们逐条分析 QPainter 是一个强大的绘图类,用于在 QWidget、QImage、QPixmap 等设备上进行绘图操作。下面我会详细解释你提到的各个函数和属性,并通过示例展示它们的用法。 1. font() 和 setFont() …

彻底改变音乐产业——人工智能如何实现利润最大化并重塑市场

引言 索尼音乐 收购 以惊人的 1 亿英镑收购了 Queen 的音乐目录。近年来,我们看到投资基金投入数亿美元收购 Justin Bieber、Bruce Springsteen、Katy Perry 等顶级艺术家的音乐版权。据 Cambridge Associates 称,从 2013 年到 2017 年,仅音…

.NET COER+CONSUL微服务项目在CENTOS环境下的部署实践

一、整体的环境安装与部署 1.1、DOCKER环境的部署 1.1.1 安装DOCKER yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makecache fast && yu…

python学习9-数据获取与整理5

有点是生成快,如果想炫酷 还是要前端生成,比如 echarts Matplotlib可视化 Matplotlib是Python中最重要的数据可视化库之一,它提供了多种绘图工具,可以生成各种硬拷贝格式和交互式环境下的多种平台上的图形。本文将详细讲解Matplo…

【MySQL】一文带你理清InnoDB引擎的<内部架构>(内存结构,磁盘结构,后台线程)

前言 大家好吖,欢迎来到 YY 滴MySQL系列 ,热烈欢迎! 本章主要内容面向接触过C Linux的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的…

【python报错已解决】`Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python`

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引言: 在开发过程中,环境配置常常会引发一些难以预料的报错。如何快速定位并解决这些问题,成…

【C++ Primer Plus习题】5.6

问题: 解答: #include <iostream> using namespace std;#define MONTHSCOUNT 12 #define YEARS 3int main() {string months[MONTHSCOUNT] { "January","February","March","April","May","June","J…

10倍加速LLM计算效率:消失的矩阵乘

矩阵乘法&#xff08;MatMul&#xff09;是深度学习中的主要计算瓶颈&#xff0c;尤其在ChatGPT等Transformer模型中&#xff0c;矩阵乘法的运行时长约占其总运行时长的45-60%&#xff0c;解决这一挑战对发展更经济的大模型具有重要意义。 为此&#xff0c;加州大学的研究人员在…

服务器搭建记录(两台服务器通过一个路由器的LAN口联网)

目录 服务器搭建记录&#xff08;两台服务器通过一个路由器的LAN口联网&#xff09;操作步骤&#xff1a;一、安装N卡驱动二、安装cuda三、安装cudnn四、配置SSH五、为服务器创建新sudo用户账号六、安装docker和NVIDIA-docker七、通过联网路由器 遇到的一些问题&#xff1a;参考…

小白之 FastGPT Windows 本地化部署

目录 引言环境步骤1. 安装 docker2. 启动 docker3. 浏览器访问4. One API 配置语言模型、向量模型渠道和令牌5. 创建 FastGPT 知识库6. 创建 FastGPT 应用 官方文档 引言 部署之前可以先看一下 RAG 技术原理&#xff0c;也可以后面回过头来看&#xff0c;对一些概念有些了解&a…

【C++指南】类和对象(二)

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《C指南》 期待您的关注

【leetcode】学习计划 - 面试经典150题 - 二叉树系列1

面试经典 150 题 - 学习计划 - 力扣&#xff08;LeetCode&#xff09; 目录 二叉树 104. 二叉树的最大深度 100. 相同的树 226. 翻转二叉树 101. 对称二叉树 105. 从前序与中序遍历序列构造二叉树 106. 从中序与后序遍历序列构造二叉树 二叉树结构 // Definition for a bin…

SpringSecurity前后端分离代码

1. 搭建 SpringBoot工程 1) 新建 boot 项目 只要一个 web 依赖 创建好的初始目录&#xff0c;直接将 demos 包删除。 导入依赖 <!-- security --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-se…

redis | 认识非关系数据库Redis的字符串数据类型及过期时间expire的作用

Redis 非关 kv型 数据类型字符串数值操作 应用场景 ⭐字符串命令练习⭐⭐过期时间设定 expire ⭐⭐⭐检查过期时间 ttl key删除过期key机制惰性删除定期删除 数据类型 数据类型丰富&#xff0c;字符串strings,散列hashes,列表lists&#xff0c;集合sets,有序集合sorted sets等等…

MySQL Order By 工作原理探究以及索引优化手段

背景 这篇文章出发的契机&#xff0c;主要是看到京东定时任务优化里面有使用到「游标」这种策略去完成查询优化 https://mp.weixin.qq.com/s/aYJV3Z-1MZ_a6tUjoHa_9g 刚好之前自己在开发业务的时候&#xff0c;也碰到类似的场景&#xff0c;需要在每个季度末将被申诉的卡片更…

流媒体协议之RTMP

一、RTMP 协议概述 今天我们要一起了解的这个协议叫 RTMP 协议&#xff0c;它并不复杂&#xff0c;对于拉流相关的协议&#xff0c;我们可以先思考一下拉流一般要交互什么&#xff0c;我理解有以下几项&#xff0c; 连接信息&#xff1a;包括服务器的地址、端口号等&#xff…

每日Attention学习16——Multi-layer Multi-scale Dilated Convolution

模块出处 [CBM 22] [link] [code] Do You Need Sharpened Details? Asking MMDC-Net: Multi-layer Multi-scale Dilated Convolution Network For Retinal Vessel Segmentation 模块名称 Multi-layer Multi-scale Dilated Convolution (MMDC) 模块作用 多尺度特征提取与融合…

一家物流装备企业终止,业绩下滑严重,恐不符合创业板新上市标准

鸿安机械终止的原因如下&#xff1a;首先&#xff0c;报告期内鸿安机械的营业收入和净利润出现下滑趋势&#xff0c;公司最近一年净利润恐不达标&#xff0c;或许不能满足创业板更新的第一套上市标准&#xff1b;其次&#xff0c;鸿安机械经营业绩对比同行业可比公司&#xff0…

笔记整理—uboot启动过程(5)BL2板级初始化

上一章说到了uboot在BL2阶段大概都要干什么&#xff0c;也说到了为了实现这些要先进行内存排布&#xff0c;实现了这些后便可实现BL2部分的板级初始化。首先先来看一下init_fnc_ptr函数指针。 for(init_fnc_ptrinit_sequence;*init_fnc_ptr;init_fnc_ptr){if((*init_fnc_ptr)(…

一文带你了解html标签

一、文档结构标签 <html>&#xff1a;网页的根标签 &#xff0c;嵌套包含所有标签。 <head>&#xff1a;头标签&#xff0c;包含文档的元数据用于编写网页的修饰内容&#xff0c;附加信息。 <body>&#xff1a;身体标签&#xff0c;用于编写展示内容&…