第5章 引用类型---JS红宝书书摘系列笔记

       在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一块儿,描述的是一类对象所具备的属性和方法。而对象是某个特定引用类型的实例。html

1、Object类型正则表达式

       能够经过Object构造函数建立一个建立Object实例,但经常使用方式是使用对象字面量表示法,这种方式能够简化建立包含大量属性的对象的过程,须要注意的是数值属性名会自动转换为字符串数组

       访问对象属性有两种方法:点表示法方括号表示法。方括号的优势体如今1.能够经过变量来访问属性、2.若是属性名包括致使语法错误的字符或者保留字以及关键字,点表示法不太合适。可是通常建议使用点表示法访问对象的属性。浏览器

 

2、Array类型数据结构

       ECMAScript数组的每一项能够保存任何类型的数据,并且数组的大小是能够动态调整的,便可以随着数据的添加自动增加以容纳新的数据。app

       同Object类型能够经过Object构造函数建立一个Object对象实例,咱们也能够经过Array构造函数建立数组。也能够经过数组字面量表示法建立。dom

       访问数组的元素时能够经过索引访问,索引从0开始。若是要改变数组的元素也能够经过索引设置。经过数组的length属性能够动态改变数组的大小。数组的最大长度是2的32次方-1.函数

       检测数组的方法:Array.isArray(value)。学习

       1.转换方法this

            数组继承的toLocaleString()、toString()、valueOf()方法,在默认状况下都会以逗号分隔的字符返回全部数组的元素。alert数组名也能够输出数组的全部的数组项,可是这一操做仍是调用了数组的toString()方法。

            数组的join()方法重现了toString()方法,可是它还能够改变分隔符。

       2.栈方法

             pop()方法:移出数组的最后一项,返回删除项 

             push()方法:添加某变量到数组的末尾,返回新数组的长度

       3.队列方法

             shift()方法:移出数组的第一项,返回删除项 

             unshift()方法:添加某变量到数组的开头,返回新数组的长度

       4.重排序方法

             reverse()方法:将数组反序   

             sort()方法:按升序排列数组项,(机制是调用每一个数组项的toString()方法,而后比较进行排序),此方法能够接收一个函数(称为比较函数),比较函数能够经过一个<0、>0或者=0的值来影响排序的结果。

            上述两种方法均返回新数组。

       5.操做方法

            concat()方法:基于当前数组的全部项建立一个新数组,此外,这个方法还能够用于引用类型数组类型的深拷贝,就是拷贝后的数组与原来的数组彻底独立。

            slice()方法:可以基于当前数组中的一或多个项建立一个新数组,其操做不影响原数组。接收两个参数,表示起始和结束(不包括结束位置的项),若参数为一个,则结束默认到数组最后一位。该方法主要用于向数组的中部插入项,同时也能够利用此方法对数组                                    进行删除、插入或者替换等操做。

            splice()方法:用于截取数组,返回一个截取下来的数组。这个方法会改变原数组。

       6.位置方法

             indexOf()和lastIndexOf()方法,查找时是使用全等操做符比较。

       7.迭代方法

             ECMAScript5定义了5种迭代方法,且这5种方法不会改变原数组。

                 every():对数组的每一项运行函数,若是该函数对每一项都返回true,则该方法返回true。

                 filter():对数组中的每一项运行函数,返回由该函数会返回true的项组成的数组。

                 forEach:本质上与使用for循环迭代数组同样,没有返回值。

                 map:对数组中的每一项运行函数,返回由函数返回结果组成的数组。

                 some:对数组中的每一项运行函数,若函数对任意一项返回true,则返回true。

      8.归并方法

             reduce()方法和reduceRight()方法,迭代数组,接收四个参数:前一项、后一项、索引、数组对象

 

3、Date类型

        日期类型在实际生产开发中很经常使用。mark几个概念。默认从1970年1月1日零时开始计算。

         Date.parse()方法:接收一个表示日期的字符串参数,返回该日期到默认的毫秒数

         Date.UTC()方法:返回结果同Date.parse()方法,它接收的参数分别是年月日时分秒毫秒,年月是必须的参数。

         Date.now()方法:返回表示调用这个方法时的日期和时间的毫秒数。若是浏览器不支持该方法,能够利用+操做符,即+Date.now()

         关于Date类型的方法,书上介绍很详细,有不少,能够参考JS红宝书P100-P102  

 

4、RegExp类型

       即正则表达式、俗称火星文。初学JS,我是拒绝学习这个的,可是实际开发中,因为数据的复杂性,也遇到不少须要利用正则的地方。

       模式+标志:模式由元字符组成,包括:([{\^$|)?*+.]}  标志包括:g(全局)、i(不区分大小写)、m(多行模式)

 

5、Function类型

      JS中每一个函数都是Function类型的实例,做为引用类型一样具备属性和方法。函数名能够看作是一个指向函数对象的指针。注意:使用不带圆括号的函数名是访问函数指针,而非调用函数。

      1.函数声明与函数表达式

         解析器在向执行环境中加载数据时,会率先读取函数声明,并使其在执行任何代码以前能够访问。而对于函数表达式,则必须等到解析器执行到函数表达式所在的位置,它才会被解释执行。

      2.函数做为值

         在JS中,函数名自己是变量,所以,函数能够做为值使用。这一点在回调函数callBack中常用到。

      3.函数内部属性

        arguments:类数组对象,包含传入函数中的全部参数,其属性callee是一个指针,指向包含这个arguments对象的函数。

        this:它引用的是函数据以执行的环境对象。

        caller:保存着调用当前函数的函数的引用,若是是在全局做用域中调用当前函数,则其值为null。另外,其不能被赋值。

      4.函数属性和方法

             length:表示函数但愿接收的命名参数的个数。

             prototype:保存ECMAScript中引用类型的全部实例方法。

        函数的方法主要包括apply()和call(),它们两者的区别就是传参的方式不一样。前者接收一个运行函数的做用域和一个参数数组;后者的第二个参数则须要注意列举参数。它们的主要做用是改变函数赖以运行的做用域。

 

6、基本包装类型

        基本包装类型的存在乎义就是为了便于操做基本类型值,在ECMAScript中,基本包装类型主要包括:Boolean、Number、String。

       引用类型和基本包装类型的主要区别是对象的生存期不一样。因为这个区别,不能给基本包装类型值添加属性和方法。

       1.Number类型

           toFixed():指定保留几位小数

           toExponential():指数表示法

           toPrecision():指定有效数字的位数

       2.String类型

          鉴于String类型的许多方法与Array类型的方法有不少类似的,因此就不详细介绍了,前面也有一篇关于JS字符串方法的概括总结:JS字符串方法

 

7、单体内置对象

     (1)Global对象

         不属于任何其余对象的属性和方法,最终都属于它的属性和方法。

         1.URI编码方法

            encodeURI():主要用于整个URI,只对空格进行编码替换

            encodeURIComponent():主要用于对URI中的某一片断进行编码,对全部非字母数字字符进行编码替换

            对应的解码方法:decodeURI()和decodeURIComponent()

         2.eval()方法

             eval()方法不推荐使用,由于容易引发恶意用户的代码注入。lue。

         3.Global对象的属性

            见JS红宝书P133表格

         4.window对象

           全局对象以访问window对象实现。

  (2)Math对象

          Math对象的方法十分强大和实用。

          经常使用的以下:

          min()和max()方法:肯定一组数值中的最小值和最大值

          Math.ceil():向上舍入

          Math.floor():向下舍入

          Math.round():四舍五入

          Math.random():返回大于等于0小于1的一个随机数。求区间[min,max]的随机数:Math.random()*max+min

          Math.abs():返回绝对值

          Math.sqrt():求平方根

相关文章
相关标签/搜索