web前端小课堂:JS内存机制都有哪些功能

Web AR如何重塑科学教育:交互式、免安装、高精度的课堂实践 增强现实(AR)作为具身认知的技术载体,正从娱乐应用深度渗透至基础教育领域。其核心价值在于将不可见的微观结构、不可及的宏观现象与不可逆的动态过程,转化为可操作、可测量、可验证的空间体验。Web AR凭借无需安装、跨平台兼容、实时更新等特性,在科学教育中展现出Native AR难以替代的优势;而‘交互式’设计则突破被动观看局限,通过拖拽、剖切、传感器联动等三维操控,驱动学生手脑协同参与建模与推理。本文聚焦DNA结构解析、光合作用模拟、电磁场可视化等真实教学场景,详解基于WebXR标准的轻量化建模、多模态锚定、 阅读详情

 

  一 背景

  180e0c548d2144838f1b0341ffa22032.png

  var a = 20;

  var b = 'abc';

  var c = true;

  var d = { m: 20 }

  因为JavaScript具有自动垃圾回收机制,所以对于前端开发来说,内存空间并不是一个经常被提及的概念,很容易被大家忽视。特别是很多不是计算机专业的朋友在进入到前端之后,会对内存空间的认知比较模糊,甚至有些人干脆就是一无所知.

  当然也包括我自己。在很长一段时间里认为内存空间的概念在JS的学习中并不是那么重要。可是后我当我回过头来重新整理JS基础时,发现由于对它们的模糊认知,导致了很多东西我都理解得并不明白。比如最基本的引用数据类型和引用传递到底是怎么回事儿?比如浅复制与深复制有什么不同?还有闭包,原型等等.

  因此后来我才渐渐明白,想要对JS的理解更加深刻,就必须对内存空间有一个清晰的认知.

  二 栈与堆

  与c++类似,javaScipt中的内存也分为栈区和堆区,它们存储数据的机制不同,导致存储数据的类型也不同,栈区主要存储简单数据类型,堆区主要存储引用数据类型.

  首先我们简单了解下栈的存取方式,这里我们可以通过类比乒乓球盒子来分析。如下图

  

 

 

 

  这种乒乓球的存放方式与栈中存取数据的方式如出一辙。处于盒子中最顶层的乒乓球5,它一定是最后被放进去,但可以最先被使用。而我们想要使用底层的乒乓球1,就必须将上面的4个乒乓球取出来,让乒乓球1处于盒子顶层。这就是栈空间先进后出,后进先出的特点。图中已经详细的表明了栈空间的存储原理。

  堆存取数据的方式,则与书架与书非常相似。书虽然也整齐的存放在书架上,但是我们只要知道书的名字,我们就可以很方便的取出我们想要的书,而不用像从乒乓球盒子里取乒乓一样,非得将上面的所有乒乓球拿出来才能取到中间的某一个乒乓球。好比在JSON格式的数据中,我们存储的key-value是可以无序的,因为顺序的不同并不影响我们的使用,我们只需要关心书的名字。

  三 复杂数据类型与基本数据类型

  基础数据类型都是一些简单的数据段,JavaScript中有5中基础数据类型,分别是Undefined、Null、Boolean、Number、String。基础数据类型都是按值访问,因为我们可以直接操作保存在变量中的实际的值。复杂数据类型 包括数组,对象等.

  四 引用数据类型与堆内存

  与其他语言不同,JS的引用数据类型,比如数组Array,它们值的大小是不固定的。引用数据类型的值是保存在堆内存中的对象。JavaScript不允许直接访问堆内存中的位置,因此我们不能直接操作对象的堆内存空间。在操作对象时,实际上是在操作对象的引用而不是实际的对象。因此,引用类型的值都是按引用访问的。这里的引用,我们可以粗浅地理解为保存在变量对象中的一个地址,该地址与堆内存的实际值相关联。

  为了更好的搞懂变量对象与堆内存,我们可以结合以下例子与图解进行理解.

  var b = { m: 20 }; // 变量b存在栈中,对应的值就是一个索引指向对象{m: 20},{m:20}作为对象存在于堆内存中.

  

  因此当我们要访问堆内存中的引用数据类型时,实际上我们首先是从变量对象中获取了该对象的地址引用(或者地址指针),然后再从堆内存中取得我们需要的数据。

  理解了JS的内存空间,我们就可以借助内存空间的特性来验证一下引用类型的一些特点了。

  在前端面试中我们常常会遇到这样一个类似的题目

  // demo01.js

  var a = 20;

  var b = a;

  b = 30;

  // 这时a的值是多少?

  // demo02.js

  var m = { a: 10, b: 20 }

  var n = m;

  n.a = 15;

  // 这时m.a的值是多少

  在变量对象中的数据发生复制行为时,系统会自动为新的变量分配一个新值。var b = a执行之后,a与b虽然值都等于20,但是他们其实已经是相互独立互不影响的值了。具体如图。所以我们修改了b的值以后,a的值并不会发生变化。

  demo01图解

  在demo02中,我们通过var n = m执行一次复制引用类型的操作。引用类型的复制同样也会为新的变量自动分配一个新的值保存在变量对象中,但不同的是,这个新的值,仅仅只是引用类型的一个地址指针。当地址指针相同时,尽管他们相互独立,但是在变量对象中访问到的具体对象实际上是同一个。如图所示

  因此当我改变n时,m也发生了变化。这就是引用类型的特性。

  

  通过内存的角度来理解,是不是感觉要轻松很多。除此之外,我们还可以以此为基础,一步一步的理解JavaScript的执行上下文,作用域链,闭包,原型链等重要概念。

拆解歌尔2718硅麦:2.75mm超小封装背后的MEMS技术解析 本文深度解析歌尔2718硅麦的2.75mm超小封装技术,探讨MEMS麦克风在微型化过程中的声学性能与结构可靠性平衡。通过ASIC芯片堆叠、纳米级应力控制等创新技术,歌尔2718在TWS耳机和智能手机中实现卓越性能,同时克服微型化带来的声学挑战。 阅读详情

相关推荐

别再只调电压了!深入理解数控电源的CC/CV模式与双闭环PID控制(以BUCK电路为例)

本文深入解析数控电源的CC/CV模式与双闭环PID控制技术,以BUCK电路为例,探讨如何通过双闭环控制优化负载突变响应和模式切换稳定性。文章详细介绍了电压环与电流环的协同工作原理、PID参数整定技巧及工程实践中的非线性补偿方法,帮助工程师提升电源设计的智能控制能力。

weixin_27017211的博客 261

web前端课堂小结

课堂小结 我们主要以京东首页为案例,进行了讲解。主要有以下知识点: 用icon时习惯用标签 网页布局主要分为固定居中布局、流动式布局、弹性布局 固定居中布局指网站内容被一个固定宽度的容器包裹,容器内的区块都有固 定的百分比或者像素宽度值,最为重要的是容器不能移动。 流动式布局其实现方法是大多数组件(包括主容器)都设置成百分比的宽度,并且根据用户的屏幕分辨率自适应。 弹性布局使用单位e...

weixin_43707318的博客 1949

多边形裁剪算法

多边形裁剪算法 刚参加工作就跟多边形刚上了,对于多边形的裁剪做一些简单的总结。 多边形裁剪主要有四种算法 Greiner-Hormann裁剪算法 Sutherland-Hodgman算法 Vatti裁剪算法 Weiler-Atherton裁剪算法 作为一名想要成为优秀算法工程师的程序员,我们不能只会使用,而不知道其原理,倘若如此,我们无法做到应用于本身业务上的定制化的修改。 Greiner–H...

papalqi 6726

JS 内存和性能

由于事件处理程序可以为现代 Web 应用程序提供交互能力,因此许多开发人员会不分青红皂白地向页面中添加大量的处理程序。在创建 GUI 的语言(如 C#)中,为 GUI 中的每个按钮添加一个 onclick事件处理程序是司空见惯的事,而且这样做也不会导致什么问题。可是在 JavaScript 中,添加到页面上的事件处理程序数量将直接关系到页面的整体运行性能。导致这一问题的原因是多方面的。首先,每个函数

A__loser的博客 631

Ubuntu终端一键安装英伟达驱动:无需手动下载的完整指南

本文提供了一份在Ubuntu系统上通过终端命令一键安装英伟达显卡驱动的完整指南。该方法利用官方PPA源,无需手动下载驱动文件,可自动检测硬件并安装最佳版本,极大简化了流程,适合深度学习环境搭建等场景,有效提升安装效率与稳定性。

weixin_29232121的博客 179

阿里云百炼平台创建智能体-上传文档

阿里云百炼智能体-上传文档文件

weixin_43930851的博客 1354

理解并解决IE的内存泄漏方式[翻译]

    这篇文章其实已经看了有些日子了,并且最近的一些开发都在尽量的遵循文中的原则。可是目前的情况是代码规模稍微大点以后,IE的内存泄漏还是很严重,于是我非常生气(倒没啥后果)觉得该把这篇文章挖出来批批。为了方便批斗,所以决定先给翻译成中文,结果在精读以后,发现每个泄漏情景的描述和避免,作者几乎都留了一手,所以这么看来文章又都对了,没啥可批的啦。只是让我想起啦真的刘一手。。。Author: Jus

...... 2710

从零构建:毫米波雷达生命信号检测系统的Matlab仿真全流程解析

本文详细解析了毫米波雷达生命信号检测系统的Matlab仿真全流程,涵盖原理、信号处理链路设计及算法优化策略。通过FMCW雷达技术,实现非接触式呼吸心跳信号检测,结合Matlab代码示例展示距离FFT、相位提取与信号分离等关键步骤,为医疗监护和智能家居应用提供实用指南。

weixin_29303701的博客 354

JavaScript为何是零基础前端入门首选语言

JavaScript是一种运行在浏览器中的轻量级脚本语言,其核心特性在于无需编译、即写即跑的即时反馈机制,天然契合初学者的认知节奏。它依托HTML/CSS构成完整前端技术栈,通过DOM操作与事件驱动实现用户交互,技术价值体现在极低启动门槛与强场景关联性——从表单校验到动态内容加载,全部源于真实网页行为。相比Python需配置环境、Java依赖复杂编译流程,JS仅需记事本+浏览器即可完成‘点击显示时间’等典型任务,完美解决新手‘学了有什么用’的根本困惑。本文聚焦零基础学习路径,详解如何借助原生JS快速构建可交

weixin_30920513的博客 491

大数据分析案例-基于决策树算法构建世界杯比赛预测模型

本项目旨在分析往届世界杯比赛数据,找出规律,最后使用决策树算法构建世界杯比赛预测模型,给出两个球队即可预测胜率,可以给爱看球的小伙伴提供一个参考。本次实验我们使用了2018年及其之前的世界杯比赛数据,通过建立决策树模型,模型准确率为82%,接着我们使用该模型预测了2022年世界杯的5场半决赛及决赛,模型准确率也是接近80%的,说明模型效果还是很不错的。心得与体会:通过这次Python项目实战,我学到了许多新的知识,这是一个让我把书本上的理论知识运用于实践中的好机会。

m0_64336780的博客 1万+

C# & SQL Server 实时数据同步:7步轻松搞定,代码详解

实时数据同步是指在一个数据库中的数据发生变化时,能够立即或近乎立即地将这些变化同步到另一个数据库中。这种同步可以是单向的(从源数据库同步到目标数据库),也可以是双向的(两个数据库互相同步)。通过本文的详细讲解和代码示例,相信你已经学会了如何使用C#和SQL Server实现数据库的实时数据同步。实时数据同步不仅可以提升系统的响应速度,还能确保数据的一致性和准确性。希望这篇教程对你有所帮助,期待你在C#编程中取得更大的成就!🌟✨如果你有任何问题或建议,欢迎在评论区留言交流!

java专栏 511

基于java ssm课堂教学效果实时评价系统视频课件表现评价课堂论坛(源码+文档+运行视频+讲解视频)

摘要: 本文介绍基于 Java SSM 框架构建的课堂教学效果实时评价系统。该系统对于提升教学质量和促进教学改进具有重要意义。 借助 SSM 框架的优势,系统实现了高效的数据管理和流畅的用户体验。视频课件表现评价功能允许学生对教师的视频课件进行评价,包括内容丰富度、讲解清晰度等方面。课堂论坛则为学生提供了一个交流讨论的平台,促进学生之间的互动和知识分享。通过实时评价,教师可以及时了解学生的学习情况和对教学的反馈,以便调整教学策略,提高教学效果。 此课堂教学效果实时评价系统为教学质量的提升提供了有力支持

weixin_mrw479640的博客 918

86、高斯过程:学习、应用与自动相关性确定

本文介绍了高斯过程回归的基本原理及其在实际应用中的关键技术,重点探讨了通过最大化对数似然函数来学习模型超参数的方法,并详细阐述了自动相关性确定(ARD)技术如何用于评估输入变量的重要性。文章涵盖了从协方差函数定义、梯度计算到优化算法的应用流程,并通过流程图和表格形式总结了核心步骤与公式。此外,还讨论了贝叶斯处理方式及异方差问题的建模策略,展示了高斯过程在复杂数据建模中的灵活性与强大能力。

android的专栏 114

2566基于Springboot+Vue的基于人脸识别的互联网课堂考勤系统

在当今科技日新月异的时代,计算机技术的兴起引领了信息化浪潮,深刻影响着社会的各个层面,极大地提升了生活便捷度和工作效率。随着计算机技术的广泛普及与深入应用,其强大的数据处理能力成为各行各业不可或缺的支撑,尤其在信息管理系统和数据处理领域展现出巨大价值,有效简化了工作流程并增强了数据安全。 鉴于当前线下管理和数据安全方面存在的诸多挑战,本文深入分析了信息管理中的问题,并决定利用计算机技术,结合MySQL数据库和Spring Boot框架,开发一套人脸识别的互联网课堂考勤系统。该系统旨在为用户提供便捷的信息查询

z459382737的博客 1177

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

IEM模型,地表粗糙度模拟

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

【前端开发】从0到1:Node.js 全栈开发实战指南

本文全面介绍了Node.js的核心知识与开发实践。首先阐述了Node.js作为基于V8引擎的JavaScript运行时环境的特点,包括事件驱动、非阻塞I/O模型和丰富的npm生态系统。接着详细讲解了开发环境搭建、基础语法、核心模块(如fs、http、path等)的使用方法。重点剖析了异步编程的三种实现方式:回调函数、Promise和async/await,并比较了它们的优缺点。在Web开发实战部分,展示了使用Express框架搭建服务器、处理HTTP请求响应、与数据库交互等关键技能。

大雨淅淅的博客 2547

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

基于人脸识别的智能课堂打卡与考勤系统设计(源码+定制+开发)优学课堂人脸识别签到系统开发 融合人脸识别技术的智慧课堂出勤管理平台 基于AI人脸识别的教育考勤系统设计与实现

博主介绍:     ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W+粉丝。作为优快云特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台的优质作者。通过长期分享和实战指导,我致力于帮助更多学生完成毕业项目和技术提升。 技术范围:     我熟悉的技术领域涵盖SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等方

程序员阿龙的博客 927

java ssm基于微信小程序的高校课堂教学管理系统课程资源互动论坛(源码+文档+运行视频+讲解视频)

摘要:基于 Java SSM 与微信小程序的高校课堂教学管理系统,融合课程资源共享与互动交流功能,革新高校课堂教学体验。 在高校教学中,知识传递与互动至关重要。教师通过系统后台上传课程课件、教学视频、参考资料,学生在微信小程序端随时随地下载学习,打破时空限制,实现自主预习复习。互动论坛按课程开设板块,学生提问、分享学习心得,教师参与讨论,及时解答疑难,激发课堂外的学习热情。系统还记录学生学习轨迹,如资料下载次数、论坛参与度,教师据此了解学生学习状态,调整教学策略,促进教学相长,营造活跃的高校学习氛围

weixin_mrw479640的博客 1107

java112基于Springboot医学电子技术线上翻转课堂系统

本文介绍了一个基于Spring Boot和Vue.js的在线教学管理系统,系统包含管理员、教师和学生三个角色。管理员功能包括用户管理、作业管理、课程资源管理等;教师功能涉及作业发布批改、课程管理等;学生功能包括作业提交、分组学习等。系统采用前后端分离架构,后端使用Spring Boot框架实现业务逻辑,前端采用Vue.js+ElementUI构建用户界面。文章详细阐述了技术选型理由,包括Spring Boot的简化配置、快速开发等优势,以及Vue.js的数据绑定、组件化等特点,并提供了系统实现截图和技术架构

z459382737的博客 887

硅谷课堂第一课-项目概述和MyBatisPlus使用

硅谷课程第一天-项目概述和MyBatisPlus使用一、硅谷课堂概述1、项目介绍2、硅谷课程流程图3、硅谷课堂功能架构4、硅谷课堂技术架构5、硅谷课堂核心技术5.1、后端技术5.2、前端技术5.3、其他技术二、技术点-MyBatisPlus1、MyBatisPlus简介1.1、概述1.2、特性2、MyBatisPlus入门2.1、创建测试数据库和表2.2、创建项目和添加依赖2.3、创建配置文件2.4、编写代码3、MyBatisPlus实现CRUD操作3.1、插入操作3.2、主键策略3.3、根据Id更新操作。

fegus的博客 807

hbuilderx下载完整示例:模拟课堂环境的一键部署方案

通过hbuilderx下载官方提供的完整示例,快速搭建模拟教学环境,提升课堂效率。方案支持一键部署,特别适合初学者和教师使用,让hbuilderx下载与配置变得简单高效。

weixin_42168902的博客 400

基于SSM框架的在线课堂平台设计与实现【项目源码+数据库+毕设论文+讲解视频】

在信息化时代,教育领域正经历着深刻的变革,线上教学作为一种新型模式,日益展现出其独特的优势和广阔的应用前景。基于SSM(Spring、SpringMVC、MyBatis)框架的在线课堂平台,旨在利用先进的Web技术,构建一个高效、互动且易于管理的在线学习环境。该平台的开发不仅能够拓宽教学渠道,满足多元化学习需求,还对优化教育资源配置、促进教育公平具有重要意义。此外,研究和实践SSM框架在教育软件中的应用,有助于提升开发者的技术能力,推动教育技术与软件工程的深度融合。

qq__3213559056的博客 693

除了框架,前端面试还问什么?

前后端分离的开发模式让前端开发者的地位日益提升,待遇水涨船高,这又吸引了一拨人慕名入前端的坑,希望能在前端领域大展宏图。但一个残酷的现实是市场上不缺初级前端开发,缺的是高...

374

2633基于Springboot+Vue的面向中职学校的第二课堂教学管理系统

JDK版本:jdk1.8+编程语言: java框架支持:springboot数据库: mysql 版本不限数据库工具:Navicat/SQLyog都可以前端:vue.js+ElementUI开发工具:IDEA 或者eclipse都支持Vue框架是一种基于JavaScript的前端开发框架,它可以和Java后台框架协同工作,开发出前后台分离的应用程序。Vue框架非常容易上手,学习简单,功能齐全,免除了JavaScript的dom操作,可以更快速地完成数据绑定。

z459382737的博客 1032

基于微信小程序的课堂考勤签到系统(毕业设计源码+lw文档)

基于微信小程序的课堂考勤签到系统,是简化课堂考勤流程、提升管理效率的轻量化教学工具。系统采用微信小程序前端 + SpringBoot 后端架构,结合 MySQL 数据库与定位技术,构建快速签到、数据统计的闭环管理体系。 核心功能 多模式签到:支持 GPS 定位签到(限定课堂范围内有效)、二维码签到(教师实时生成动态码,时效可设)、人脸快速识别签到,适配不同教学场景。 师生端操作:教师端可发起 / 结束签到、查看签到明细(未到 / 迟到 / 早退统计)、导出考勤报表;学生端一键响应签到,查看个人考勤记录与课程

博主自己就是程序员、避免中介对接,从事软件开发多年,累计开发或辅导多名同学, 有丰富的项目开发和文档编写经验、同学们有任何项目问题都可以联系我~ 1114

如何搭建我自己的web系统

比如在使用 Node.js 搭建 Web 服务器时,你可以使用express框架,通过res.setHeader('Content-Type', 'application/json')这样的方式来设置响应的 MIME 类型,告诉客户端返回的数据是 JSON 格式的。为了实现用户登录功能,设计了基于Cookie和Session的机制:用户输入姓名后,后端生成唯一的Session ID(使用UUID),存储在ConcurrentHashMap中,并通过Set-Cookie响应头发送给客户端。

2401_83845674的博客 1124

【辉光大小姐小课堂】129 AI WASM 跨界沟通专家--优化数据传输,调试内存泄漏,并生成高效的胶水代码(Glue Code)

专业的“WASM跨界沟通专家”,它能帮你设计JS与WASM之间最高效的数据通信方案,生成健壮、易懂的“胶水代码”(Glue Code),并指导你如何调试和管理WASM的线性内存,让“跨次元”开发变得流畅自如。

光辉家族小仓库 1018
上一篇: canvas的学习方法,这些妙招你知道么
下一篇: web前端数组操作方法有哪些
QF_HTML5
博客等级 码龄9年 104粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值