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

     
 在ECMAScript中,引用类型是平种植多少结构,用于将数据及功能集团以联名,描述的凡如出一辙类对象所所有的特性和章程。而目标是有特定引用类型的实例。

一、Object类型

     
 可以经Object构造函数创建一个创办Object实例,但常用方式是下对象字面量表示拟,这种办法可简化创建包含大量属性之目标的历程,需要小心的凡数值属性名会自动转换为字符串。

     
 访问对象属性有有限种植艺术:点表示法方括号表示法。方括号的助益体现于1.得由此变量来访问属性、2.设属性名包括导致语法错误的字符或保留字以及要字,点表示法不顶方便。但是一般提议使用点表示法访问对象的习性。

 

二、Array类型

     
 ECMAScript数组的各国一样项好保留任何类型的数量,而且屡组的深浅是好动态调整之,即好就数据的丰富机关增长为包容新的多寡。

     
 同Object类型可以由此Object构造函数创建一个Object对象实例,我们吧堪经过Array构造函数创建数组。也可经反复组字面量表示法创建。

     
 访问数组的因素时方可透过索引访问,索引从0开始。如果假定转移屡组的因素呢足以经过索引设置。通过反复组的length属性可以动态改变屡组的大大小小。数组的最要命尺寸是2之32不善方-1.

       检测往往组的主意:Array.isArray(value)。

       1.转换方法

           
数组继承的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()方法,迭代数组,接收四独参数:前无异项、后一致项、索引、数组对象

 

三、Date类型

       
日期类型在实质上生产出中非常常用。mark几单概念。默认从1970年1月1日零时起来算计。

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

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

       
 Date.now()方法:返回表示调用这个法时之日子以及时间的毫秒数。如果浏览器不支持该法,可以采用+操作符,即+Date.now()

       
 关于Date类型的章程,书上介绍好详细,有很多,可以参考JS红宝书P100-P102  

 

四、RegExp类型

     
 即正则表达式、俗称火星文。初学JS,我是不容读是的,但是实际上开支被,由于数量的错综复杂,也遇上许多急需用正则的地方。

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

 

五、Function类型

     
JS中每个函数都是Function类型的实例,作为援类型同样具有属性和方法。函数名为好当作是一个针对函数对象的指针。注意:使用无带圆括号的函数名是访问函数指针,而非调用函数。

      1.函再三扬言和函数表达式

       
 解析器在通向实践环境受到加载数据常常,会首先读取函数声称,并设该于推行另外代码之前好看。而对此函数表达式,则必须顶及解析器执行及函数表达式所在的职位,它才会受解说施行。

      2.函数当作价值

       
 在JS中,函数名叫本身是变量,因此,函数可以当作价值使用。这无异于触及当回调函数callBack中不时以到。

      3.函数里头属性

       
arguments:类数组对象,包含传入函数中之持有参数,其特性callee是一个指南针,指向包含这个arguments对象的函数。

        this:它引用的凡部数据以执行的环境目标。

       
caller:保存着调用当前函数的函数的援,如果是于大局作用域中调用当前函数,则其值为null。另外,其不可知为赋值。

      4.函数属性和艺术

             length:表示函数希望接受的命名参数的个数。

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

       
函数的办法要不外乎apply()和call(),它们二者的别就是是传参的法门各异。前者接收一个运转函数的作用域和一个参数数组;后者的亚个参数则用注意列举参数。它们的要害作用是移函数赖以运行的作用域。

 

六、基本包装档次

       
基本包装档次的留存意义就是是为着便于操作基本项目值,在ECMAScript中,基本包装档次主要包括:Boolean、Number、String。

     
 引用类型和核心包装档次的要紧区别是目标的生存期不同。由于此分,不克给核心包装档次值加加属性和方法。

       1.Number类型

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

           toExponential():指数表示拟

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

       2.String类型

         
鉴于String类型的无数艺术及Array类型的措施来众多形似的,所以便不详细介绍了,前面吧出一样首有关JS字符串方法的汇总总结:JS字符串方法

 

七、单体内置对象

     (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():求平方根