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操作符创建的引用实例在执行流离开当前作用域之前一直保存在内存中。而自动创建的基本包装类型的对象,只存在代码的执行瞬间,然后立即销毁,意味着不能添加属性方法。

原文地址:https://www.cnblogs.com/ljg1998/p/12671629.html

时间: 2024-08-06 17:27:53

JavaScript高级程序设计(第三版) 5/25的相关文章

《JavaScript高级程序设计 第三版》 前2章 Javascript简介与HTML 读书笔记

第一章:Javascript简介 1.JavaScript诞生于1995年,当时,它的主要目的是处理以前由服务器端语言(如Perl)负责的一些输入验证操作.现在,JavaScript是一种专为与网页交互而设计的脚本语言. 注:Netscape(网景)公司研发,Java是sun公司研发,原名为LiveScript,为了搭上媒体热炒的Java的顺风车,更名为JavaScript 2.微软推出JSript的和网景的JavaScript相竞争,最后微软胜利.ECMA指定了规定并重新命名为ECMAScri

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

IE5 是第一款引入XHR 对象的浏览器.在IE5 中,XHR 对象是通过MSXML 库中的一个ActiveX对象实现的.因此,在IE 中可能会遇到三种不同版本的XHR 对象,即MSXML2.XMLHttp.MSXML2.XMLHttp.3.0 和MXSML2.XMLHttp.6.0.要使用MSXML 库中的XHR 对象,需要像第18章讨论创建XML 文档时一样,编写一个函数,例如: //适用于IE7 之前的版本 function createXHR() { if (typeof argumen

2.1 <script>元素【JavaScript高级程序设计第三版】

向 HTML 页面中插入 JavaScript 的主要方法,就是使用<script>元素.这个元素由 Netscape 创造并在 Netscape Navigator 2 中首先实现.后来,这个元素被加入到正式的 HTML 规范中. HTML 4.01 为<script>定义了下列 6 个属性. async:可选.表示应该立即下载脚本,但不应妨碍页面中的其他操作,比如下载其他资源或等待加载其他脚本.只对外部脚本文件有效. charset:可选.表示通过 src 属性指定的代码的字符

javascript高级程序设计第三版 读书笔记

第三章   基本概念 1.在JavaScript中是区分大小写的,第一个字符是字母 _ 或者$,其他字符可以试数字 字母 _ 或者$,命名格式要求是驼峰式书写(第一个字母小写,剩下的每个有意义的单词开头大写  比如fontSize) 2.单行注释//  块级注释为/*多行 内容*/ 不得使用关键字和保留字 3.在JavaScript中变量是松散型的   可以为任何一种类型 4.用var操作符定义的变量成为定义该变量的作用域中的局部变量. function test(){ var i = 'hi'

20.2 解析与序列化【JavaScript高级程序设计第三版】

JSON 之所以流行,拥有与JavaScript 类似的语法并不是全部原因.更重要的一个原因是,可以把JSON 数据结构解析为有用的JavaScript 对象.与XML 数据结构要解析成DOM 文档而且从中提取数据极为麻烦相比,JSON 可以解析为JavaScript 对象的优势极其明显.就以上一节中包含一组图书的JSON数据结构为例,在解析为JavaScript 对象后,只需要下面一行简单的代码就可以取得第三本书的书名: books[2].title 当然,这里是假设把解析JSON 数据结构后

模拟事件【JavaScript高级程序设计第三版】

事件,就是网页中某个特别值得关注的瞬间.事件经常由用户操作或通过其他浏览器功能来触发.但很少有人知道,也可以使用JavaScript 在任意时刻来触发特定的事件,而此时的事件就如同浏览器创建的事件一样.也就是说,这些事件该冒泡还会冒泡,而且照样能够导致浏览器执行已经指定的处理它们的事件处理程序.在测试Web 应用程序,模拟触发事件是一种极其有用的技术.DOM2 级规范为此规定了模拟特定事件的方式,IE9.Opera.Firefox.Chrome 和Safari 都支持这种方式.IE 有它自己模拟

4.1 基本类型和引用类型的值【JavaScript高级程序设计第三版】

ECMAScript 变量可能包含两种不同数据类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据段,而引用类型值指那些可能由多个值构成的对象. 在将一个值赋给变量时,解析器必须确定这个值是基本类型值还是引用类型值.第3 章讨论了5 种基本数据类型:Undefined.Null.Boolean.Number 和String.这5 种基本数据类型是按值访问的,因为可以操作保存在变量中的实际的值. 引用类型的值是保存在内存中的对象.与其他语言不同,JavaScript 不允许直接访问内存中的

读Javascript高级程序设计第三版第六章面向对象设计--创建对象

虽然Object构造函数或者对象字面量都可以用来创建单个对象,但是缺点非常明显:使用同一接口创建很多对象,会产生大量重复代码. 工厂模式  1 function CreatePerson(name,age,job){ 2         var o=new Object(); 3         o.name=name; 4         o.age=age; 5         o.job=job; 6         o.sayName=function(){ 7            

javascript高级程序设计第三版dom元素大小笔记

是滚动大小(scroll dimension),指的是包含滚动内容的元素的大小.有些元素(例如 <html>元素),即使没有执行任何代码也能自动地添加滚动条:但另外一些元素,则需要通过 CSS 的 overflow 属性进行设置才能滚动.以下是 4 个与滚动大小相关的属性. 在IE8以下scrollHeight=元素内容本身的高度. 1.增加边框,不同浏览器有不同解释. 谷歌火狐IE>=8会忽略边框的大小. 2,增加内边距,最终值是width||height+padding ie8以下是

10.1.5 Comment类型【JavaScript高级程序设计第三版】

注释在DOM中是通过Comment 类型来表示的.Comment 节点具有下列特征: nodeType 的值为8: nodeName 的值为"#comment": nodeValue 的值是注释的内容: parentNode 可能是Document 或Element: 不支持(没有)子节点. Comment 类型与Text 类型继承自相同的基类,因此它拥有除splitText()之外的所有字符串操作方法.与Text 类型相似,也可以通过nodeValue 或data 属性来取得注释的内