JS高级程序设计第五章读书笔记
1.引用类型的值(对象)是引用类型的一个实例。在ES中,引用类型是一种数据结构,用于将数据和功能组织在一起。它们也长被称为类,但这并不妥当。因为ES在技术层面上是一门面对对象的语言,但它并不具备传统的面向对象的语言所支持的了和接口等基本结构,引用类型有时候也被称为对象定义,因为他们描述的是一类对象所具有的属性和方法。
2.创建object实例的方式有两种,第一种是使用new操作符后跟object构造函数。另一种方式是使用对象字面两表示法。
3.ES数组除了与其他编程语言一样都是数据的有序列表外,不同的是,ES数组的而每一项都可以保存任何类型的数据。
4.创建数组的基本方式有两种。一种是Array构造函数。另一种则是使用数组字面量表示法。与对象的构建方法相同的是,在使用数组字面量表示法时,也不会调用Array构造函数。
5.instanceof操作符能解决某个对象是不是数组的问题,但如果一个网页存在多个框架,则会存在多个全局执行环境,就会有多个Array构造函数,如果一个数组从一个框架传向另一个框架,那么传入的数组与在第二个框架中原生创建的数组便具有了不同的构造函数。而ES5新增了Array.isArray()方法。这个方法可以无视在那个全局环境创建的,而得出是不是数组。
6.调用数组的tostring()会返回有数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串。
7.在调用toLocaleString()方法时,他会创建一个数组值的一逗号分隔的字符串。
8.ES数组也提供了push()和pop()方法,以便实现类似与栈的行为(后进先出)。push()方法可以接受任意数量的参数,把他们添加到数组的末尾,并返回修改后数组的长度。而pop()方法,则会从数组末尾一处最后一项,减少数组的length值,然后返回移除的项。
9.数组还有shift()方法,它能够移除数组中的第一个项并返回该项。同时数组长度减1。
10.数组中已经存在两个可以直接用来重排序的方法:reverse()和sort()。其中reverse()方法会对方砖数组项的顺序。而sort()则默认按升序排列数组项,但sort()也会可以接受一个比较函数作为参数,以便我们指定那个值位于那个值得后面。
11.数组的concat方法可以基于当前数组中的所有项创建一个新数组。slice()则能够用基于当前数组的一过多个项创建一个新数组。
12.数组中的solice方法时最强大的数组方法。可以删除,插入,替换。其主要用途是想数组的中部插入项。
16.ES5为数组是咧添加了两个位置方法:indexOf()和lastIndexOf().这两个方法都接收两个参数:要查找的项和表示查找起点位置的索引。只不过前者在数组的开头找,后者在数组的末尾找。
17.ES5为数组定义了5个迭代方法。每个方法都接受两个参数:要在每一项上运行的函数与和(可选的)运行该函数的作用域对象——影响this的值。传入这些方法的函数会接收三个参数:数组项的值,该项在数组中的位置和数组对象本身。这五个迭代方法分别是:every();filter();foeEach();map();some()。
18.ES5海新增了两个缩小数组的方法:reduce()和reduceRight().这两个方法都会迭代数组的所有想,然后构建一个最终返回的值。两个方法都接受两个参数:一个在每一项上调用的函数和(可选)作为缩小基础的初始值。传给reduce()和reduceRight()的函数接受4个参数:前一个值,当前值,项的索引和数组对象。两个方法作用相同,但方向相反。
19.ES通过RegExp类型支持正则表达式。正则表达式的匹配模式支持下列3个标志:
g:表示全局模式,即模式将被应用于所有的字符串。而非在发现第一个匹配项立即停止。
i:表示不区分大小写模式,即在确定匹配项时忽略模式与字符串的大小写;
m:表示多行模式,即在到达一行文本末尾是还会继续查找下一行中是佛存在与模式匹配的项。
一个正则表达式就是一个模式和上述三个表示的组合体。不同的组合则会产生不同的结果。
20.RegRxp的每个是咧都会具有以下属性,通过这些属性可以取得有关模式的各种信息。
global:布尔值,表示是否设置了g标志。
ignoreCase:布尔值,表示是否设置了i标志。
lastIndex:整数,表示开始搜索下一个匹配项的字符位置,从0算起。
multiline:布尔值,表示是否设置m标志。
source:正则表达式的字符串表示。按照字面量形式传入构造函数中的字符串模式返回。
21.RegExp对象的主要方法是exec(),该方法是专门为捕获组而设计的。
22.由于函数是对象,英雌函数名实际上也是一个指向函数对象的指正,不会与某个函数绑定。又因为ES中的函数名本省是对象,所以函数也可以作为值来使用。
23.在函数内部,有两个特殊的对象:arguements和this。arguements是一个类数组对象,包含着传入函数中的所有参数。该对象还有一个叫callee的属性,是一个指针,可以返回正在执行的Functon对象。指向拥有argument对象的函数。this引用的是函数据以执行的环境对象。
24.ES中函数是对象,因此函数也有属性和方法。每个函数都包括两个属性:length和prototype.其中length属性表示函数希望接受的命名参数的个数。而在ES核心所定义的全部属性中,prototype最耐人寻味了。,对于ES中的引用类型而言,prototype是保存他们所有实例方法的真正所在。且该属性不能被枚举。
25.ECMA-262定义了两个单体内置对象Global和Math.
26.Global是全局对象。包含了URI编码方法和eval_r()方法。eval_r()是ES语言最强大的一个方法。只接受一个参数,即要执行的字符串。