全球推广/阳西网站seo

全球推广,阳西网站seo,深圳市住房和建设局门户网站,南阳做网站为什么会有 map、weakmap 类型? 传统对象的局限性催生 Map‌1. 键类型单一性‌2. 有序性与迭代支持‌3. 性能优化场景‌ 内存管理需求催生 WeakMap‌1.弱引用机制‌2. 私有数据存储‌3. 规避循环引用问题‌ 总结 传统对象的局限性催生 Map‌ 1. 键类型单一性‌ 传统对象&…

为什么会有 map、weakmap 类型?

  • 传统对象的局限性催生 Map‌
    • 1. 键类型单一性‌
    • 2. 有序性与迭代支持‌
    • 3. 性能优化场景‌
  • 内存管理需求催生 WeakMap‌
    • 1.弱引用机制‌
    • 2. 私有数据存储‌
    • 3. 规避循环引用问题‌
  • 总结

传统对象的局限性催生 Map‌

1. 键类型单一性‌

传统对象(Object)的键只能是‌字符串或 Symbol‌,无法直接使用对象、函数等复杂类型作为键名。而 Map 允许‌任意数据类型作为键‌(包括对象、函数等),解决了键类型受限的问题‌

// 传统对象键名被强制转为字符串 ‌:ml-citation{ref="4" data="citationList"}
const objKey = { id: 1 };
const data = {};
data[objKey] = 'value'; // 键名实际存储为 "[object Object]"
console.log(data['[object Object]']); // 输出 "value"// Map 直接使用对象作为键 ‌:ml-citation{ref="4,6" data="citationList"}
const map = new Map();
map.set(objKey, 'value');
console.log(map.get(objKey)); // 直接输出 "value"

2. 有序性与迭代支持‌

Map ‌保持键值对的插入顺序‌,支持通过 forEach、for...of 等方法遍历,且提供 size 属性快速获取键值对数量,弥补了传统对象无法保证顺序和统计大小的不足‌

const map = new Map();
map.set('a', 1).set('b', 2);
for (const [key, val] of map) {console.log(key, val); // 输出顺序:a 1 → b 2
}

3. 性能优化场景‌

在频繁增删键值对或需要大量非字符串键的场景下,Map 的性能优于传统对象(尤其在处理对象键时)‌。

内存管理需求催生 WeakMap‌

1.弱引用机制‌

WeakMap 的键必须是‌对象‌,且对键是‌弱引用‌(不阻止垃圾回收)。当键对象被外部代码释放后,WeakMap 会自动清理对应的键值对,避免内存泄漏‌。

2. 私有数据存储‌

WeakMap 适合存储与对象生命周期绑定的私有数据,例如 Vue3 中管理组件响应式数据‌。

// 模拟 Vue3 响应式系统使用 WeakMap ‌:ml-citation{ref="1" data="citationList"}
const reactiveMap = new WeakMap();
function createReactiveObject(target) {if (reactiveMap.has(target)) {return reactiveMap.get(target);}const proxy = new Proxy(target, { /* 处理逻辑 */ });reactiveMap.set(target, proxy);return proxy;
}
// 组件销毁后,target 对象被回收,WeakMap 自动清理对应代理

3. 规避循环引用问题‌

在复杂对象关联场景中,WeakMap 的弱引用特性可避免因相互引用导致的内存无法回收问题‌。

总结

在这里插入图片描述

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

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

相关文章

SpringSecurity认证授权完整流程

SpringSecurity认证流程:loadUserByUsername()方法内部实现。 实现步骤: 构建一个自定义的service接口,实现SpringSecurity的UserDetailService接口。建一个service实现类,实现此loadUserByUsername方法。…

本地部署DeepSeek R1大数据模型知识库

DeepSeek-V3 的综合能力 DeepSeek-V3 在推理速度上相较历史模型有了大幅提升。在目前大模型主流榜单中,DeepSeek-V3 在开源模型中位列榜首,与世界上最先进OpenAI 闭源模型不分伯仲。 1、下载Ollama运行大数据库 Ollama支持 Llama 3.3, DeepSeek-R1, Phi-…

【javaEE】多线程(基础)

1.❤️❤️前言~🥳🎉🎉🎉 Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的…

一周学会Flask3 Python Web开发-WTForms表单验证

锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 我们可以通过WTForms表单类属性的validators属性来实现表单验证。 常用的WTForms验证器 验证器说明DataRequired(messageNo…

STM32标准库代码详解之GPIO

GPIO的初始化代码如下: /*开启时钟*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //开启GPIOA的时钟,使用外设必须开启/*GPIO初始化*/ GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量 GPIO_InitStructure.GPIO_Mode GPIO_Mo…

第六课:数据库集成:MongoDB与Mongoose技术应用

本文详细介绍了如何在Node.js应用程序中集成MongoDB数据库,并使用Mongoose库进行数据操作。我们将涵盖MongoDB在Ubuntu 20系统中的安装、Bash命令的CRUD操作、Mongoose数据建模(Schema/Model)、关联查询与聚合管道,以及实战案例—…

大数据学习(56)-Impala

&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦&#x1f91…

【C#】async与await介绍

1. 实例1 1.1 代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace ConsoleApp1 {class Program{static void Main(string[] args){Method1();Method2();Console.ReadKey();}public static…

【大模型基础_毛玉仁】1.1 基于统计方法的语言模型

【大模型基础_毛玉仁】1.1 基于统计方法的语言模型 1.语言模型基础1.1 基于统计方法的语言模型1.1.1 n-grams 语言模型1.1.2 n-grams 的统计学原理 1.语言模型基础 语言是概率的。语言模型(LanguageModels, LMs)旨在准确预测语言符号的概率。 将按照语…

JavaScript(最后一个元素的索引就是数组的长度减 1)array.length - 1

在不同的编程语言中,表示数组中最后一个元素的方法略有不同,但基本思路都是利用数组的长度或索引来实现。 以下是一些常见编程语言中获取数组最后一个元素的方法: 1. JavaScript: 使用 array.length - 1 索引: 这是最常见和传统的方法。Java…

7V 至 30V 的超宽 VIN 输入范围,转换效率高达 96%的WD5030

WD5030 具备 7V 至 30V 的超宽 VIN 输入范围,这一特性使其能够适应多种不同电压等级的供电环境,无论是在工业设备中常见的较高电压输入,还是在一些便携式设备经过初步升压后的电压,WD5030 都能轻松应对,极大地拓展了应…

深度学习模型Transformer核心组件—自注意力机制

第一章:人工智能之不同数据类型及其特点梳理 第二章:自然语言处理(NLP):文本向量化从文字到数字的原理 第三章:循环神经网络RNN:理解 RNN的工作机制与应用场景(附代码) 第四章:循环神经网络RNN、LSTM以及GR…

利用Ollama+AnythingLLM+本地向量数据库Milvus+本地DeepSeek大模型实现知识库的搭建

1. Ollama的搭建 基本介绍 Ollama是一个支持在Windows、Linux和MacOS上本地运行大语言模型的工具。它允许用户非常方便地运行和使用各种大语言模型,比如Qwen模型等。用户只需一行命令就可以启动模型。 Ollama 下载:https://ollama.com/download Ollama 官方主页&a…

国产编辑器EverEdit - 安装扩展功能的方式

1 扩展管理 1.1 应用场景 由于各行各业工作场景的不同,编辑器不可能为所有行业都定制功能,因此,对于一些特殊的行业应用场景,某些资深工程师可能已经做了一些扩展,并分享到了共享平台,普通工程师可以安装这…

Go语言集成DeepSeek API和GoFly框架文本编辑器实现流式输出和对话(GoFly快速开发框架)

说明 本文是GoFly快速开发框架集成Go语言调用 DeepSeek API 插件,实现流式输出和对话功能。为了方便实现更多业务功能我们在Go服务端调用AI即DeepSeek接口,处理好业务后再用Gin框架实现流失流式输出到前端,前端使用fetch请求接收到流式的mar…

SAP服务器进程预警通知

在财务月结,HR薪资核算等系统用户集中使用高峰时期。通过判断判断当前系统可用的并行对话框进程数,用户使用过多给出提示,服务器进程预警通知。 1. 根据配置的进程最大可使用率80%,根据进程数判断:当进程可用数少于20%…

【Java代码审计 | 第四篇】SQL 注入防范

文章目录 Java SQL 注入防御方法类型转换预编译查询(PreparedStatement)使用 ORM 框架(如 MyBatis、Hibernate)白名单限制ORDER BY 语句LIKE 语句 限制数据库权限过滤和转义特殊字符监控与日志审计使用 Web 应用防火墙&#xff08…

软考中级-数据库-3.3 数据结构-树

定义:树是n(n>=0)个结点的有限集合。当n=0时称为空树。在任一非空树中,有且仅有一个称为根的结点:其余结点可分为m(m>=0)个互不相交的有限集T1,T2,T3...,Tm…,其中每个集合又都是一棵树,并且称为根结点的子树。 树的相关概念 1、双亲、孩子和兄弟: 2、结点的度:一个结…

uniapp项目运行失败Error: getaddrinfo *.bspapp.com 文件查找失败uview-ui及推荐MarkDown软件 Typora

一、uniapp项目运行失败Error: getaddrinfo *.bspapp.com 文件查找失败uview-ui 在运行一个uniapp项目时,出现报错 文件查找失败:uview-ui,Error: getaddrinfo ENOTFOUND 960c0a.bspapp.com。hostname异常,报错的详细信息如下&…

大模型发展历程

大模型的发展历程 大语言模型的发展历程一、语言模型是个啥?二、语言模型的 “进化史”(一)统计语言模型(SLM)(二)神经语言模型(NLM)(三)预训练语…