前面写的一篇“值类型、引用类型与基本包装类型之我见”的博文里提到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就是浏览器最底层的包装库,那么既然是库,那必然有包装,包装就是定义的一些概念,一些表达式的规则),怎么去理解,我觉得还是取决于个人
相关推荐
JS内存泄漏检测工具:IEJSLeaksDetector
javascript 数组内存释放
Js内存泄漏及解决方案,来源与网上的各种面经
js3内存修改器
Javascript是基于对象的脚本语言,理所当然会有对象概念的存在,通常我们在项目中都是运用“function fnname{…..}”的形式直接声明一个方法,再去调用。这么做很方便。但是如果你的项目中拥有频繁的JS操作,比如...
JS 内存检测工具
javascript,js中函数的定义及使用
关于JAVASCRIPT中的关于二维码的数组的定义与排序方法!!!名师讲解.
js画出来的不规则线条,可以按照一定的规则来画图
Javascript内存泄露
一个易于定义规则的JavaScript密码生成器
理解Javascript理解内存分配原理
SonarQube分析web端项目,遵循的基本内置规则;规则为常用激活规则,含bug、漏洞、坏味道三方面不同程度(严重、阻断、主要、次要、提示等级别)。
自己整理的 JavaScript 内存分析,祝你一臂之力!
网上使用java开发sonarqube的检测规则的文档很少,本文档较为详细描述了JavaScript扩展的开发过程。
js内存管理及优化总结和文档,有些文档已经比较旧了,目前来说很少有人关注js内存管理,这里有一些别人总结出来的文章和参考文档,多少能长点见识。
JAVASCRIPT实现的CPU内存监控
javascript开发的web流程定义工具
JavaScript程序设计 变量 2.2.1 什么是变量 1、字面量 都是一些不可以改变的值。 2.2.1 什么是变量 2、变量 白话:变量就是一个装东西的盒子。 通俗:变量是用于存放数据的容器,我们通过变量名来获取数据,甚至...
介绍有关JavaScript_内存机制,以及避免内存泄露!