JS内存模型

JavaScript 内存详解 & 分析指南 前言 JavaScript 诞生于 1995 年,最初被设计用于网页内的表单验证。 这些年来 JavaScript 成长飞速,生态圈日益壮大,成为了最受程序员欢迎的开发语言之一。并且现在的 JavaScript 不再局限于网页端,已经扩展到了桌面端、移动端以及服务端。 随着大前端时代的到来,使用 JavaScript 的开发者越来越多,但是许多开发者都只停留在“会用”这个层面,而对于这门语言并没有更多的了解。 如果想要成为一名更好的 JavaScript 开发者,理解内存是一个不可忽略的关键点。 ???? 阅读详情

首先编写一段求长方形的面积周长程式:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Rectangle</title>
</head>
<body>
<!--题目: 定义一个创建“长方形”的构造函数(有参数,通过参数给属性赋值)
属性:长(length);(实例属性)
 宽(width);(实例属性)
方法:求面积;(原型方法)
     求周长;(原型方法)
通过这个构造函数创建出3个不同的对象,并调用对象方法计算对象的面积和周长;
-->
<script>
    //构造函数,传递一个对象obj
    function Rectangle(obj) {
        this._init(obj);
    }

    //原型替换
    Rectangle.prototype = {
        //使得原型函数又指向Rectangle函数对象
        constructor:Rectangle,
        //原型的方法,对初始化属性进行单独封装成对象,用对象传递
        _init: function (obj) {
            //css6中的方法,就是把obj对象中的属性全部传到this里
            Object.assign(this, obj);
        },
        area: function () {
            return this.width * this.length;
        },
        perimeter: function () {
            return this.width * 2 + this.length * 2;
        }
    };

    //new对象
    var r1 = new Rectangle({length: 10, width: 10});
    var r2 = new Rectangle({length: 20, width: 90});
    var r3 = new Rectangle({length: 50, width: 60});
    //output information
    console.log("r1长方形面积为: " + r1.area());
    console.log("r1长方形周长为: " + r1.perimeter());
    console.log("r2长方形面积为: " + r2.area());
    console.log("r2长方形周长为: " + r2.perimeter());
    console.log("r3长方形面积为: " + r3.area());
    console.log("r3长方形周长为: " + r3.perimeter());
</script>
</body>
</html>

我们看看程式的内存分配是怎样的:



上课老师笔记:


--------------------------




----------------------



----------------------------------



------------------------------



--------------------------



-------------------------


-----


---



---


----



-----



---



稳扎稳打JavaScript(一)——作用域链内存模型 几个概念在开始之前,先了解几个概念。1.1. 作用域 作用域是指当前正在执行的代码能够访问到变量的范围; 每个函数都有各自的作用域,存储函数所有的局部变量; 1.2. 变量对象 变量对象用于存储函数各自的局部变量; 每个函数都有各自的变量对象,并且在函数执行时被创建; 上文提到:“每个函数都有各自的作用域,用于存储函数的局部变量”,其实这句话并不严谨。作用域中存储的其实是变量对象的引用,而变量对象才 阅读详情

相关推荐

全面分析总结JS内存模型

前言 最近在整体复习一遍现代前端必备的核心知识点,将会整理成一个前端分析总结文章系列。这篇是其中的第二篇,主要是总结下JS底层的内存模型。(另外,此系列文章也可以在语雀专栏——硬核前端系列查看)。 本文首发自迪诺笔记,转载请注明出处???? 一、数据类型与内存 数据类型分类 主要分为两大类:基本数据类型、复杂数据类型,详细分类如下。 数据类型 基本数据类型 String、Numbe...

dino小恐龙的博客 474

深入JS内存模型

什么是JS的内存模型,看过了很多资料,都是千篇一律的栈内存,堆内存,基本数据类型存储在栈内存,引用数据类型存储在堆内存等等之类的,看过这些之后,对于我们去理解整个JS内存之中复杂的关系。本文会从JavaScript语法之中的各个语言特性由浅入深分析JavaScript的内存。...

子谦 1318

稳扎稳打JavaScript(二)——图解对象内存模型

1. 什么是JS对象?在JS中,对象是一组无序属性的集合。其中,属性可以是基本数据类型、引用类型、函数。如下面这个对象的例子:var chai={ name : "柴毛毛", // 属性为基本数据类型 perosn : { // 属性为引用类型 address : "xxx", sex : "man" }, getName : func

大闲人柴毛毛 6818

Javascript之V8内存和垃圾回收讲解

V8是一款主流的JavaScript执行引擎V8采用即时编译(一般的JS引擎源代码- 字节码才会执行,而V8会直接翻译成机器码)V8内存设有上限的(64位 ≤ 1.5G;32位 ≤ 800M )

上善若泪 1311

【JavaScript核心技术卷】JS的逻辑内存模型

文章目录JavaScript的逻辑内存模型一、面向对象的三要素二、JavaScript的逻辑内存模型三、JavaScript的对象与Java的实例四、window对象的内存逻辑模型五、Object构造函数的内存逻辑模型六、Function构造函数的内存逻辑模型七、JavaScript的类继承八、JavaScript的对象与类 JavaScript的逻辑内存模型 Java语言是面向对象的,而JavaScript语言是基于对象的。两者之间是有差异的。这里主要以这两种语言进行一个对比。 一、面向对象的三要素 1.封装 (数据结构 + 算法) Java语言可通过访问修饰符来保证封装性:private。

扩增子分析|溯源分析在R中的复现:跟着Nature系列文章利用FEAST溯源分析包追溯微生物群落的起源

溯源分析由Liat Shenhav等人在2019年发表在Nature Methods杂志,他们开创的一种分析微生物群落组成结构的方法,通过量化不同微生物样本(来源)在目标微生物群落(汇)中的比例或分数识别微生物群落的潜在来源。该方法自发表以来受到微生物学界广泛关注,该论文截止2024年10月9日已经被引289次,是领域内高被引论文,该方法已经成为Nature,cell系列文章高度关注的方法。

weixin_46814750的博客 3439

JavaScript系列—Js的内存模型

原文地址(https://zhuanlan.zhihu.com/p/62449359) 摘要:从内存角度理解 let 和 const 的意义。 原文:JavaScript 是如何工作的:JavaScript 的内存模型 作者:前端小智 // 声明一些变量并初始化它们 var a = 5; let b = "xy"; const c = true; // 分配新值 a = 6; b = ...

jiaojsun的博客 927

网络安全学习路线是怎样的?

为什么要学习安全? 近几年网络安全事件层出不穷,相信大家哪怕没遇到过,但也听过不少了吧。如服务器遭受入侵被黑,用户帐号被盗;被钓鱼、勒索病毒等,这些一旦发生,对企业而言都是不小的打击。因此,网络安全不容忽视,同时随着时代的不断发展,公司对于运维及网络工程师要求也越来越严格。未来越来越吃香的一定是技能方向广的复合型人才。网络安全可以说是一条非常好的发展道路。 今年两会期间,全国政协委员,360集团创始人、董事长周鸿祎提交了关于网络安全行业特殊人才的提案,为广大白帽子人员争取更好...

网安技术分享 8704

js的内存模型

一.基本数据的内存模型      在js中基本数据类型有5种:number、string、boolean、Undefined、null。可以通过“typeof 变量”来查看变量属于什么类型。     其中Number类型:整数 、浮点数            String类型:字符串,字符            boolean:true、false            Undefine...

kingdomjc 830

【asrpro语音模块+语音控制小风扇】

智能语音控制小风扇,使用ASRPRO语音模块只要一句话就能设置小风扇不同挡位的风力。图形化编程简单有效的控制输出PWM的占空比。

qq_57234300的博客 1万+

R语言机器学习:XGBoost线性回归模型的SHAP值

SHAP(SHapley Additive exPlanations)值是一种基于博弈论Shapley值的机器学习模型解释方法,能够解释任何模型的预测结果。其主要用途包括:1)提高模型的可解释性,帮助非技术用户理解模型预测;2)识别对模型预测最重要的特征,辅助特征选择;3)调试模型,发现预测中的异常;4)评估模型公平性,避免偏见。SHAP值的计算方法包括初始化、迭代计算、归一化和解释,常用工具如Python的shap库支持多种计算方式(如TreeSHAP、KernelSHAP等)。本文还提供了基于R语言计算

专注生信领域 3444

javascript 内存模型

我对于 JavaScript 的内存模型一直都比较困惑,很想了解在操作变量的时候,JS 是如何工作的。如果你和我有同样的困惑,希望这篇文章能给你一些启发。 译文,喜欢原文的可以直接拉到底部 当我们声明变量、初始化变量、更改变量值的时候,到底会发生什么?JavaScript 是如何实现这些基本的功能?最重要的是,我们如何才能理解这些基础知识? 本文将覆盖以下 4 个方面: JavaScr...

weixin_30763397的博客 147

YOLOv11涨点改进| CVPR 2026 |独家创新首发、特征融合改进篇| 引入FAAFusion傅里叶角对准融合模块,促进高低频特征融合,增强模型在小目标、密集目标检测和旋转目标检测任务高效涨点

🔥本文提出FAAFusion傅里叶角对准融合模块,用于改进YOLOv11网络模型。该模块通过在特征金字塔融合阶段对齐高低层特征的方向信息,缓解传统FPN直接融合带来的方向冲突问题。FAAFusion利用傅里叶旋转等变性原理,在频域估计主方向并进行特征对齐,显著提升了多尺度特征表达的一致性与有效性。实验表明,该方法在DOTA等遥感数据集上取得了新的最先进水平,特别适用于旋转目标检测任务。文章详细介绍了模块原理、结构优势,并提供了三种不同的YOLOv11改进配置方案和完整的核心代码实现。

Ai缝合怪、助力小伙伴高效发论文 154

JavaScript 内存模型

JavaScript 的内存模型是理解变量存储、内存管理和性能优化的关键。

echo_123qq的博客 459

Agent应用实践之三十六 - AgentScope高阶用法:AG-UI

AI 大模型飞速进化,不懂 AI、不会用 Agent 的程序员,正在慢慢被行业淘汰。现在 AI 新技术迭代快到离谱:RAG 还没学明白,MCP 接踵而来;工具刚上手,Skills、各类新 Agent 概念又轮番刷屏;Manus还没看懂,就出来OpenClaw,OpenClaw热度还没退,又出来Hermes。越追越乱、越学越焦虑,永远在被动跟风,陷入学不完、跟不上、用不上的内耗。其实焦虑的根本原因,不是新技术太多,而是不懂大模型 Agent 应用底层原理,只会零散跟风,没有通用方法论。为此我专门推出Agent

代码让AI扣 144

Marvell 88Q6113 如何制作一个完整的量产固件88Q6113_flash.bin并进行烧录

本章节介绍如何基于Marvell工具链,制作一个完整的量产固件88Q6113_flash.bin,集成用户自定义的配置文件 config.bin,用于88Q6113的Flash烧录。注:Marvell 88Q5072 与 Marvell 88Q6113 的配置流程是一样的。

老板来份猪脚拼叉烧的博客 2013

JavaScript 是如何工作的:JavaScript 的内存模型

// 声明一些变量并初始化它们 var a = 5; let b = "xy"; const c = true; // 分配新值 a = 6; b = b + "z"; c = false; // 类型错误:不可对常量赋值 作为程序员,声明变量、初始化变量(或不初始化变量)以及稍后为它们分配新值是我们每天都要做的事情。 但是当这样做的时候会发生什么呢? JavaScript...

编程知识分享 398

多模态论文笔记——CogVLM和CogVLM2

本文详细介绍LoRA版本的多模态模型——CogVLM和CogVLM2。在SD3中使用其作为captioner基准模型的原因和优势。

haopinglianlian的博客 2205

关于 js:3. 闭包、作用域、内存模型

闭包是函数 + 它定义时所“记住的外部作用域”,是 JS 中保持私有状态、构建封闭模块、模拟 OOP 的基础机制。维度闭包的作用闭包的风险私有封装隐藏内部变量,形成“模块”外部无法直接访问,逆向难持久状态保留执行上下文和变量容易导致变量无法被释放工厂函数构建个性化函数实例可能间接产生大量引用逆向分析拆出混淆变量、解密逻辑需打破闭包还原环境点内容🔹 作用域是静态的函数定义时就决定了作用域链🔹 执行上下文是动态的函数每次调用都会创建新上下文🔹 作用域链控制变量访问顺序。

Triste__chengxi的博客 2108

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

JavaScript中的new与内存模型

需要明确类型标识(如。

2301_82023822的博客 1197

老版QQ原生表情gif动态

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

JavaScript的内存模型

引言 在我们的前端日常工作中,无时无刻不在进行着变量的声明和赋值,你是否也曾碰到过变量声明报错或变量被污染的问题,如果你跟笔者一样碰到过,那么我们应该暂时停下来好好思考问题发生的原因以及如何采取相应的补救措施。当然排查问题最好的方式就是深入其底层细节,了解在JavaScript中的内存分配方式。只有我们对底层细节有一定的了解之后,才能轻而易举地化解在写代码过程中遇到的各种问题。本文基于JavaS...

a21700790yan的博客 171

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

理解 JavaScript 的內存模型

理解 JavaScript 的內存模型前言正文JS 原始類型變量聲明與賦值JS 內存模型JS 非原始類型變量聲明與賦值let vs const結語 前言 作為一名程序員,無論用什麼語言,每天我們都在聲明變量,初始化變量,給變量重新賦值,這都是我們的日常工作。但是,我們真的知道 js 如何在內部,在底層處理這些事情嗎?還是用完就無所謂了。要成為一名好的程序員,這些還是都要知道的,這篇就來談談 js 的內存模型以及其工作方式。 正文 以下分四個部分來探討這個問題: JS 原始類型變量聲明與賦值 JS 內存模型

weixin_46803507的博客 171

顶层const和底层const的理解_理解 JavaScript 内存模型,就靠这几张图了!

戳蓝字「前端技术优选」关注我们哦!//声明变量并初始化vara=5letb='xy'constc=true//重新赋值a=6b=b+'z'c=false//TypeError:Assignmenttoconstantvariable作为程序员,声明变量、初始化变量、给变量重新赋值,这些是我们的日常工作。但是,这么做的时候实际上发生了...

weixin_40006963的博客 193

JavaScript内存模型

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34403693的博客 179

如何将某个groupbox中的数据赋值到另一个groupbox_「译」JavaScript 如何工作:JavaScript 内存模型(进阶必备)...

前言本文是关于JavaScript内存模型系列文章的第一篇,后续会继续分享关于共享传递和按值传递的相关内容。通过本系列文章的阅读,相信你对JavaScript内存模型应该会有比较深入的理解。当然,欢迎大家关注我,我将持续分享哪些前端层面核心的知识点,希望能给同处前端的你带来一点点收获。关于JavaScript核心知识点的理解也欢迎大家阅读我写的以下文章:《「第二篇」工作3年了,为什么Class的这...

weixin_39947351的博客 137
上一篇: JavaScript对象字面量和构造函数详解
下一篇: JavaScript的数组练习
风或许自媒体
博客等级 码龄12年 76粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值