`
w2363536460126
  • 浏览: 2524 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

js围绕内存的规则定义

    博客分类:
  • js
阅读更多

  前面写的一篇“值类型、引用类型与基本包装类型之我见”的博文里提到js就是围绕内存来展开自己语言规则的,这也是我一直在强调的东西,所以建议先看我那篇文章理解思想后再来看我下面的内容,我说的东西注重是思想。

 

  学任何语言开始我们都是开始学什么语法、变量、表达式啊什么的,其实你想过没有,所有这些不过就是要教你接受这门语言定义出的关键字以及这些关键字它所代表的意思和规则,因为js是门解释性的语言无需编译,所以它定义的关键字及规则应该比较靠近内存的逻辑,这也是我强调要把握好js内存的管理思想后再去学习js。让我们回顾一下js给我们提供的一些常用的关键字(举几个本文要分析的):var number new function {}等。我前面说过语言定义的规则目的就是为了操作内存,内存操作也就分为:如何在内存开辟空间,如何给开辟的空间给数据,如何取出指定空间的数据。

 

  var的规则是在内存中开辟空间,也就是我们给变量空位子,如:var a;然后接下来就是要给我们的变量a放数据了,内存是根据值类型和引用类型的数据区分存储模式的,这里很关键的是放数据,放的数据是什么类型,怎么放进去,别急,js有自己的规则定义,js专门定义了自己的语言的数据类型,基础类型(undefined null boolean number string,js把定义的这几种类型归到内存中值类型的范畴里面)还有就是object array date regexp function(js把定义的这几种类型归到内存中引用类型的范畴里面),那js是如何来识别数据的类型的呢,开始阶段js跟其它高级语言没什么区别,比如:a=23;这时a的数据就是number类型(它归为内存里的值类型,就以值类型的方式在内存里存储)。js除了这样的普通方式外还定义了许多自己的规则,鉴于内存中引用类型数据的特殊性(伸缩性,就是所占空间可以变大变小,无疑就是数据里面的东西进行增删查改),js为了把这种特殊性归到自己的规则里面来用,所以才衍生出了object array date regexp function这些自己规则里面的引用类型的数据类型,它们各有自己的特色(本文不在这里探讨他们具体的用处,再次强调本文讲的是思想,规则最好去查标准书籍);我这里就拿function和{}这两种引用类型在js规则是怎么反应到内存中简单说一下,var a={} 和function b(){},如果撇开函数定义的特殊关键字"function"和"()"的话它跟普通的对象没什么区别(所以说函数就是加上js函数特殊关键字的特殊对象,其实js定义的那几种自己的引用类型的数据都是对象,只是各自有了自己的规则,由各自的关键字来决定),就是在内存中开辟了一个引用类型的数据(怎么存储看我开头提到的那篇文章,里面有图示),加上了“function”和“()”后,js把它叫函数,它的规则是:调用内存栈里面的变量b后面再加上个(),b();就可以执行它所指的内存堆里面存放的函数体内容了。关于new和{}这两关键字的规则,我会在后续分析,这里面涉及到一个字面量对象的问题,最后还是想提醒大家,我讲的是思想,可能跟你们在书上看到的不是很一样,我说过书上的是叫你们学习它规则的定义,是通过包装的(为什么这么说,我一向认为如果jquery是js的包装库,那我觉得js就是浏览器最底层的包装库,那么既然是库,那必然有包装,包装就是定义的一些概念,一些表达式的规则),怎么去理解,我觉得还是取决于个人

分享到:
评论

相关推荐

    three.js 模拟实现围绕光球飞舞的生物群运动动画特效源码.zip

    在本项目中,我们主要探讨的是使用JavaScript库three.js创建一个动态的、具有环绕光球飞行的生物群运动动画特效。three.js是一个流行的开源库,专门用于在Web浏览器中进行3D图形渲染,它提供了丰富的功能,使得开发...

    JavaScript基础练习_day10

    题目将重点围绕JavaScript的基础知识点进行展开,并随着练习的深入逐步增加难度。 #### 二、代码分析 在本节中,我们将逐一分析题目中给出的代码片段,并解释每一段代码背后的原理。 ##### 1. 作用域与`this` ```...

    嵌入式web部分源码参考

    本文将围绕“嵌入式web部分源码参考”这一主题,深入探讨html、js(JavaScript)和css(Cascading Style Sheets)在构建嵌入式Web系统中的应用,并结合压缩包中的"webs"文件进行分析。 首先,HTML(HyperText ...

    翻牌.zip

    在"翻牌抽奖"游戏中,每个翻牌可能是一个`<div>`元素,通过CSS来定义其样式和位置,而翻转效果则可能通过JavaScript实现。 2. **CSS样式设计**: CSS(Cascading Style Sheets)用于控制HTML元素的外观和布局。在...

    imap-stream-源码.rar

    `imap-stream`的设计考虑了扩展性,用户可以自定义处理流的策略,如定义新的邮件解析规则,或者实现更复杂的邮件过滤逻辑。 综上所述,`imap-stream`库通过流式处理和事件驱动的方式,为Node.js开发者提供了一种...

    jquery+ajax实现的表单分页,页面复杂表单数据的加载

    本知识点主要围绕jQuery、Ajax、分页以及复杂表单的数据加载进行深入探讨。 首先,jQuery是一个流行的JavaScript库,它简化了DOM操作、事件处理、动画以及Ajax交互等任务。通过使用jQuery,开发者可以编写更简洁、...

    Back-End-Cognizant-Project:围绕.NET Framework,C#和一些javascript用法的项目。 网站的后端部分已完成,将来可能会发生一些变化

    CLR是运行时环境,负责代码的执行、内存管理、异常处理等,而类库则提供丰富的功能,如文件操作、网络通信等。C#代码编译成中间语言(IL),然后由CLR解释执行,这使得跨语言的开发成为可能。 C#作为.NET Framework...

    JavaScript每天必学之基础知识

    本篇内容将围绕JavaScript的基础知识点进行详细解读,包括变量声明、数据类型、类型转换以及变量作用域等。 首先,JavaScript是一种区分大小写的语言。这意味着在定义变量名、函数名以及其他标识符时,大小写必须...

    手机wap源码模板 (705).zip

    最后是"js"文件夹,这通常包含了JavaScript脚本,它们负责实现网站的交互功能。在WAP网站中,JavaScript常用来处理用户输入、动态更新内容、实现动画效果等。对于移动设备,考虑到性能和电池寿命,JavaScript代码...

    XML大作业+平时实验

    3. **DTD(文档类型定义)或XML Schema**:这两者都是用来定义XML文档结构和数据类型的工具,确保文档遵循预设规则。 4. **XPath**:一种在XML文档中选取节点的语言,可以用来查找、导航和选取XML数据。 5. **XSLT...

    编程代码

    - **JavaScript**:主要用于Web前端开发,也是Node.js后端开发的基础。 每种语言都有其特点和适用场景,选择合适的语言对于项目成功至关重要。 #### 3. 代码质量的重要性 良好的代码质量能够显著提高软件的可维护...

    Ext 皮肤样式 实现完美换肤效果

    "Ext皮肤样式 实现完美换肤效果"的主题主要围绕如何利用ExtJS的皮肤系统,实现应用界面的多样化和个性化。 1. **皮肤机制**:ExtJS的皮肤系统允许开发者通过更换CSS样式文件和图像资源来改变组件的外观。每个皮肤...

    2021-2022计算机二级等级考试试题及答案No.11822.docx

    根据提供的文件信息,我们可以总结出一系列重要的IT知识点,这些知识点主要围绕计算机二级等级考试的相关内容展开,涵盖了编程语言特性、数据库管理系统、Web开发基础、数据结构、算法原理等多个方面。下面是详细的...

    一根筋源码.zip

    在"一根筋"这个文件名中,"一根筋"可能是指这款游戏的设计理念,即游戏可能围绕着单一目标或简单操作展开,玩家需要专注于一项任务或解决一个特定问题。这种游戏往往强调直截了当的玩法,易于理解但可能有挑战性。 ...

    Robot-Rampage:这是我正在制作的游戏

    由于JavaScript在浏览器环境中运行,开发者需要关注内存管理、减少DOM操作、避免阻塞主线程等因素,以确保游戏在各种设备上都能有良好的表现。此外,为了提高用户体验,可能还需要考虑游戏的加载策略,如使用懒加载...

    一款比较简单的富文本编辑器

    富文本编辑器通常基于浏览器的DOM(Document Object Model)和JavaScript技术构建,它通过在浏览器的内存中创建一个虚拟的文本区域,模拟操作系统中的文本编辑环境。用户在编辑器中输入的文字会实时转化为HTML代码,...

    PHP高级工程师必知必会Nginx+keepalived+MongoDB+haproxy+Sphinx实现分布式集群部署实战视频

    本文将围绕“Nginx + keepalived + MongoDB + haproxy + Sphinx”这一技术栈,详细介绍如何实现一个稳定的分布式集群部署方案。 #### 二、关键技术解析 ##### 1. Nginx **定义**:Nginx是一款高性能的HTTP和反向...

    webpack-multiple:webpack5 多页面脚手架

    2. 配置 `.eslintrc.js`,定义规则和排除文件。 3. 安装 Prettier 并配置 `.prettierrc`,设定格式化规则。 4. 可以通过 ESLint 插件 `eslint-plugin-prettier` 结合 Prettier 使用,使格式化和规范检查融为一体。 ...

    Domino编程

    下面我们将围绕以下几个核心知识点进行讨论: 1. **Lotus Domino架构**:Domino是由服务器、数据库、文档、表单、视图和代理等元素构成的。服务器管理数据库的存储和访问,数据库则包含一系列结构化的文档,每个...

    grid-website:网格网站

    2. **JavaScript Grid库**: 虽然CSS Grid强大,但有时JavaScript库如`Gridster.js`、`Isotope`或`Masonry`能提供更高级的功能,如动态添加/删除元素、自适应布局和更灵活的交互。这些库通常通过JavaScript API与HTML...

Global site tag (gtag.js) - Google Analytics