第三章

基本概念

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的更多相关文章

  1. JavaScript高级程序设计第三版.CHM【带实例】

    从驱动全球商业.贸易及管理领域不计其数的复杂应用程序的角度来看,说 JavaScript 已经成为当今世界上最流行的编程语言一点儿都不为过. JavaScript 是一种非常松散的面向对象语言,也是 ...

  2. javascript高级程序设计第三版书摘

    在HTML 中使用JavaScript <script>元素 在使用<script>元素嵌入 JavaScript 代码时,只须为<script>指定 type 属 ...

  3. 22.1 高级函数【JavaScript高级程序设计第三版】

    函数是JavaScript 中最有趣的部分之一.它们本质上是十分简单和过程化的,但也可以是非常复杂和动态的.一些额外的功能可以通过使用闭包来实现.此外,由于所有的函数都是对象,所以使用函数指针非常简单 ...

  4. DOM 操作技术【JavaScript高级程序设计第三版】

    很多时候,DOM 操作都比较简明,因此用JavaScript 生成那些通常原本是用HTML 代码生成的内容并不麻烦.不过,也有一些时候,操作DOM 并不像表面上看起来那么简单.由于浏览器中充斥着隐藏的 ...

  5. 21.1 XMLHttpRequest 对象【JavaScript高级程序设计第三版】

    IE5 是第一款引入XHR 对象的浏览器.在IE5 中,XHR 对象是通过MSXML 库中的一个ActiveX对象实现的.因此,在IE 中可能会遇到三种不同版本的XHR 对象,即MSXML2.XMLH ...

  6. JavaScript高级程序设计第三版-读书笔记(1-3章)

    这是我第一次用markdown,也是我第一次在网上记录我自己的学习过程. 第一章 JavaScript主要由以下三个不同的部分构成 ECMAScript   提供核心语言功能 DOM     提供访问 ...

  7. 14.5 富文本编辑【JavaScript高级程序设计第三版】

    富文本编辑,又称为WYSIWYG(What You See Is What You Get,所见即所得).在网页中编辑富文本内容,是人们对Web 应用程序最大的期待之一.虽然也没有规范,但在IE 最早 ...

  8. JavaScript高级程序设计第三版学习笔记(一)之数据类型区分详谈

    null.NaN.undefined三者的区别是什么? 在初次接触到JavaScript的时候,傻傻的分不清null.NaN.undefined三者到底区别何在,在实际的项目开发中也因为这个问题而困惑 ...

  9. 4.2 执行环境及作用域【JavaScript高级程序设计第三版】

    执行环境(execution context,为简单起见,有时也称为“环境”)是JavaScript 中最为重要的一个概念.执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为.每个执行环 ...

  10. 13.4.3 鼠标与滚轮事件【JavaScript高级程序设计第三版】

    鼠标事件是Web 开发中最常用的一类事件,毕竟鼠标还是最主要的定位设备.DOM3 级事件中定义了9 个鼠标事件,简介如下. click:在用户单击主鼠标按钮(一般是左边的按钮)或者按下回车键时触发.这 ...

随机推荐

  1. 洛谷 P1313 【计算系数】

    这道题只要肯动手还是挺水的 进入正题 我们先枚举几个找找规律(这里先省略x,y): k = 0 :\(1\) k = 1 : \(a\) \(b\) k = 2 : \(a^{2}\) \(2ab\) ...

  2. DTD约束和Schema约束

    DTD约束 什么是DTD? DTD(Document Type Definition),文档类型定义,用来约束XML文档.规定XML文档中元素的名称,子元素的名称及顺序,元素的属性等. DTD约束长什 ...

  3. Oracle Solaris 10下gdb安装(附安装包)

    文章目录 1. 背景说明 2. gdb相关包 3. gdb安装 3.1 上传资源 3.2 解压 3.3 安装 3.4 环境变量 4. 位数确认 5. 验证可用性 1. 背景说明 本文承接Oracle ...

  4. 关于延迟段创建-P1

    文章目录 1 疑问点 2 环境创建 2.1 创建用户 2.2 创建表test 2.3 查看表的段信息 2.4 延迟段创建相关参数 1 疑问点 P1页有句话说道: 在Oracle 11.2.0.3.0以 ...

  5. 洛谷 P3694 邦邦的大合唱站队 状压DP

    题目描述 输入输出样例 输入 #1 复制 12 4 1 3 2 4 2 1 2 3 1 1 3 4 输出 #1 复制 7 说明/提示 分析 首先要注意合唱队排好队之后不一定是按\(1.2.3..... ...

  6. 如何科学地完成一场 AR 发布会?全在这份超细节活动策划 Xmind 里了

    你们在哪个酒店搭的景? 5 月 28 日,网易智慧企业完成了一场实景人物拍摄 + 虚拟舞台渲染的 AR 线上见面会.非常有趣的是,在直播过程中,不止一位观众问我们,“你们是在哪个酒店搭的景?”.看来我 ...

  7. Java工具类之:包装类

    Java工具类--包装类 我们都知道,JDK 其实给我们提供了很多很多 Java 开发者已经写好的现成的类,他们其实都可以理解成工具类,比如我们常见的集合类,日期相关的类,数学相关的类等等,有了这些工 ...

  8. Hadoop集群之浅析安全模式

    集群启动顺序: NameNode启动 NameNode启动时,首先将镜像文件(Fsimage)载入内存,并执行编辑日志(Edits)中的各项操作.一旦在内存中成功建立文件系统元数据的映像,则创建一个新 ...

  9. JavaScript学习 Ⅶ

    十四. DOM(文档对象模型) 节点:Node--构成HTML文档最基本的单元 文档节点:整个HTML文档 元素节点:HTMl文档中的HTML标签 属性节点:元素的属性 文本节点:HTML标签中的文本 ...

  10. 数据可视化之powerBI基础(一) 如何查看PowerBI图表背后的数据

    https://zhuanlan.zhihu.com/p/64405494 图表很直观,但有时候我们不仅想看图,也想更进一步查看生成该图表的明细数据,在PowerBI中有三种方式. (一)在图表上单击 ...