JavaScript高级程序设计(第三版) 5/25
第三章
基本概念
1.任何语言的核心都必然会描述这门语言最基本的工作原理。而描述的内容通常都要涉及这门语言的语法、操作符、数据类型、内置功能等用于构建复杂解决方案的基本概念。
2.浮点数值,该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字。
3.保存浮点数值需要的内存空间是保存整数值的两倍。
4.浮点数值的最高精度是17位小数。经典问题0.1 + 0.2 !== 0.3。
5. Number.MIN_VALUE, 5e-324. Number.MAX_VALUE,1.7976931348623157e+308. 超过被自动转换成Infinity(正无穷),或者-Infinity(负无穷)。
6.isFinite()判断是否有穷
7.任何数除以0会返回NaN,(实际只有0/0是NaN,正数/0是正无穷,负数/0是负无穷)
Object类型
8.Object类型是所有它的实例的基础。Object的每个实例都具有下列属性和方法。
construtor:保存着用于创建当前的对象的函数。
hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。
isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型
propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in语句
toLocaleString():返回对象的字符串表示。(需要打印不然没输出)
toString():返回对象的字符串表示。
valueOf:返回对象的字符串,数值,布尔值的表示。
第四章
变量、作用域和内存问题
1.只能给引用类型动态的添加属性。
2.值传递 引用传递,基本类型是值传递,引用类型,因为复制的至少一个指针,指针指向存储在堆中的一个对象,所以堆中的对象改变都变。基本类型存储在栈内存中。
3.
function setName(obj) {
obj.name = "Nicholas";
obj = new Object();
obj.name = "Greg"
}
var person = new Object();
setName(person);
alert(person.name);
结果alert的是“Nicholas”,实际上,在函数内部重写obj的时候,这个变量引用就是一个局部对象了,而这个局部对象会在函数执行完毕后立即被销毁。
4. result = variable instanceof constructor
5.全局执行环境被认为是window对象(),全局执行环境直到应用程序退出,例如关闭网页或浏览器,时才会被销毁。
6.JavaScript具有自动垃圾收集机制,原理:找出那些不再继续使用的变量,然后释放其占用的内存。为此,垃圾收集器会按照固定的时间间隔(或代码执行中预定的收集时间),周期性地执行这一操作。
7.JavaScirpt中最常用的垃圾收集方式是标记清除(mark-and-sweep),垃圾收集器在运行时会给存储在内存中的所有变量都加上标记,然后,它会去掉环境中的变量以及被环境中的变量引用的变量的标记。而在此之后再被加上标记的变量被视为准备删除的变量,原因是环境中的变量已经无法访问到这些变量了。最后,垃圾收集器完成内存清除工作,销毁那些带标记的值并回收他们所占用的内存空间。
8.另外一种不太常用的垃圾收集策略叫做引用计数(reference counting),变量赋值给另一个变量,引用次数加1,如果是取得另一个值,那么引用次数减1,当这个值的引用次数为0时,则说明无法再访问这个值,因而可以将其占用的内存空间回收回来。
引用计数的问题,循环引用:对象A包含了指向B的指针,B包含了指向A的指针。
function problem(){
var objectA = new Object();
var objectB = new Object();
objectA.someOhterObject = objectB;
objectB.anohterObject = objectA;
};
problem();
引用次数永远不为0.
9.一旦数据不再有用,最好通过将其值设为null来释放引用——这个做法叫做解除引用(dereferencing)。这一做法适用于大多数全局变量和全局对象的属性。局部变量会在它们离开执行环境时自动被解除引用。
10.解除一个值的引用并不意味着自动回收该值所占用的内存。解除引用的真正作用是让值脱离执行环境,以便垃圾收集器下次运行时将其回收。
第五章
引用类型
1.引用类型是一种数据结构,用于将数据和功能组织在一起。它也常被称为类。
2.Object类型的创建方法,第一种使用new操作符后跟Object构造函数 var person = new Object(); 第二种对象字面量表示法 var person = { name: ''fa"};
3.访问对象的属性时可以用方括号,比如alert(person["name"];等价于alert(person.name);
如果属性名中包含会导致语法错误的字符,或者属性名使用的是关键字或保留字,也可以用方括号表示法。比如person["first name"]="Nicholas";有空格,.不能访问
通常,除非必须使用变量来访问属性,否则建议用点表示法
4.数组也是有上限的,最多4294967295个项
5.instanceof操作符的问题在于,它假定只有一个全局执行环境。
为了解决这个问题ES5新增了Array.isArray()
6.日期,正则表达式
7.Function,没有重载,后面覆盖前面
8.解析器会优先解析函数声明,再解析函数表达式。
9.函数有两个特殊的对象:arguments和this,
递归算法,因为函数体内会调用自身函数,紧密耦合了,所以最好用arguments.callee替代。
10.基本包装类型:Boolean,Number,String。
访问字符串时候的步骤,
var s1 = "some text"
var s2 = s1.substring(2); //可以看成
var s1 = new String("some text");
var s2 = s1.substring(2);
s1 = null;
(1)创建String类型的一个实例 (2)在实例上调用指定的方法 (3)销毁这个实例。
11.引用类型和基本包装类型的主要区别是对象的生存期,new操作符创建的引用实例在执行流离开当前作用域之前一直保存在内存中。而自动创建的基本包装类型的对象,只存在代码的执行瞬间,然后立即销毁,意味着不能添加属性方法。
JavaScript高级程序设计(第三版) 5/25的更多相关文章
- JavaScript高级程序设计第三版.CHM【带实例】
从驱动全球商业.贸易及管理领域不计其数的复杂应用程序的角度来看,说 JavaScript 已经成为当今世界上最流行的编程语言一点儿都不为过. JavaScript 是一种非常松散的面向对象语言,也是 ...
- javascript高级程序设计第三版书摘
在HTML 中使用JavaScript <script>元素 在使用<script>元素嵌入 JavaScript 代码时,只须为<script>指定 type 属 ...
- 22.1 高级函数【JavaScript高级程序设计第三版】
函数是JavaScript 中最有趣的部分之一.它们本质上是十分简单和过程化的,但也可以是非常复杂和动态的.一些额外的功能可以通过使用闭包来实现.此外,由于所有的函数都是对象,所以使用函数指针非常简单 ...
- DOM 操作技术【JavaScript高级程序设计第三版】
很多时候,DOM 操作都比较简明,因此用JavaScript 生成那些通常原本是用HTML 代码生成的内容并不麻烦.不过,也有一些时候,操作DOM 并不像表面上看起来那么简单.由于浏览器中充斥着隐藏的 ...
- 21.1 XMLHttpRequest 对象【JavaScript高级程序设计第三版】
IE5 是第一款引入XHR 对象的浏览器.在IE5 中,XHR 对象是通过MSXML 库中的一个ActiveX对象实现的.因此,在IE 中可能会遇到三种不同版本的XHR 对象,即MSXML2.XMLH ...
- JavaScript高级程序设计第三版-读书笔记(1-3章)
这是我第一次用markdown,也是我第一次在网上记录我自己的学习过程. 第一章 JavaScript主要由以下三个不同的部分构成 ECMAScript 提供核心语言功能 DOM 提供访问 ...
- 14.5 富文本编辑【JavaScript高级程序设计第三版】
富文本编辑,又称为WYSIWYG(What You See Is What You Get,所见即所得).在网页中编辑富文本内容,是人们对Web 应用程序最大的期待之一.虽然也没有规范,但在IE 最早 ...
- JavaScript高级程序设计第三版学习笔记(一)之数据类型区分详谈
null.NaN.undefined三者的区别是什么? 在初次接触到JavaScript的时候,傻傻的分不清null.NaN.undefined三者到底区别何在,在实际的项目开发中也因为这个问题而困惑 ...
- 4.2 执行环境及作用域【JavaScript高级程序设计第三版】
执行环境(execution context,为简单起见,有时也称为“环境”)是JavaScript 中最为重要的一个概念.执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为.每个执行环 ...
- 13.4.3 鼠标与滚轮事件【JavaScript高级程序设计第三版】
鼠标事件是Web 开发中最常用的一类事件,毕竟鼠标还是最主要的定位设备.DOM3 级事件中定义了9 个鼠标事件,简介如下. click:在用户单击主鼠标按钮(一般是左边的按钮)或者按下回车键时触发.这 ...
随机推荐
- actuator与spring-boot-admin 可以说的秘密
SpringBoot 是为了简化 Spring 应用的创建.运行.调试.部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖 ...
- js element类型的属性和方法整理
Element类型 除了Document类型,我们Web编程中最常用的类型就是Element类型啦.Element 类型用于表现XML或HTML元素,提供了对元素标签名,子节点,特性的访问 特征 no ...
- day72 bbs项目☞登录注册
目录 一.表创建及同步 二.注册功能 二.登录页面搭建 一.表创建及同步 from django.db import models from django.contrib.auth.models im ...
- sass-loader安装+Failed to resolve loader: sass-loader You may need to install it.解决方法
方式一: 通过 cnpm 安装node-sass cnpm install node-sass --save 方式二: 通过npm 安装 1.安装sass-loader npm install sas ...
- requests接口自动化8-传递数据为xml形式的post请求:data
传递数据为xml形式的post请求 请求体内容: <?xml version=“1.0” encoding = “UTF-8”?> <COM> <REQ name=&qu ...
- scrapy 基础组件专题(一):scrapy框架中各组件的工作流程
Scrapy 使用了 Twisted 异步非阻塞网络库来处理网络通讯,整体架构大致如下(绿线是数据流向): Scrapy主要包括了以下组件: 引擎(Scrapy)用来处理整个系统的数据流处理, 触发事 ...
- 数据可视化基础专题(三):Pandas基础(二) csv导入与导出
1.csv导入 1.1 csv导入 .read_csv()函数 pandas.read_csv(filepath_or_buffer: Union[str, pathlib.Path, IO[~Any ...
- web 部署专题(一):Gunicorn运行与配置方法
Gunicorn“绿色独角兽”是一个被广泛使用的高性能的Python WSGI UNIX HTTP服务器,移植自Ruby的独角兽(Unicorn )项目,使用pre-fork worker模式,具有使 ...
- 数据可视化之powerBI技巧(四)使用Power BI制作帕累托图
各种复杂现象的背后,其实都是受关键的少数因素和普通的大多数因素所影响,把主要精力放在关键的少数因素上,就能达到事半功倍的效果. 这就是大家常说的二八原则,也称为帕累托原则,最早是由意大利经济学家 V. ...
- 绘图和可视化知识图谱-《利用Python进行数据分析》
所有内容整理自<利用Python进行数据分析>,使用MindMaster Pro 7.3制作,emmx格式,源文件已经上传Github,需要的同学转左上角自行下载或者右击保存图片. 其他章 ...