五、引用类型
对象属性的访问一般为点表示法,但javascript也可以使用方括号表示法来访问对象的属性。这两种访问对象属性的方法没有任何功能区别,但使用方括号语法的优点是可以通过变量来访问属性。ECMAScript 5为数组添加了两个位置方法:indexOf()和lastIndexOf()。(IE 9+才支持)同时ECMAScript 5还为数组定义了5个迭代方法。(以下方法不会修改数组中的包含的值)every():对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。filter():对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组。forEach():对数组中的每一项运行给定函数。这个方法没有返回值。map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。some():对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true。ECMAScript 5还新增了两个缩小数组的方法:(这两个方法都会迭代数组的所有项,然后构件一个最终返回的值。这两个方法都接收两个参数:一个在每一项上调用的函数和[可选的]作为缩小基础的初始值。函数接收4个参数:前一个值、当前值、项的索引和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数是数组的第二项。)reduce():Array.reduce(function(prev,cur,index,array){return prev + cur;})//数组求和reduceRight()://仅仅是从哪头开始遍历数组的方向不同而已创建RegExpl类型的方法:模式中的元字符必须转义:( [ { \ ^ $ | ) ? * + . ] }var expression1 = /pattern/flags;(flags:g,i,m)var expression2 = new RegExp("pattern","flags");此处pattern为字符串转义符需多一个反斜杠
使用正则表达式字面量和使用RegExp构造函数创建正则表达式不一样。在ECMAScript 3 中,正则表达式字面量始终共享同一个RegExp实例,而使用构造函数创建的每个新RegExp实例都是新实例。ECMAScript 5明确规定,使用正则表达式字面量也必须直接调用RegExp构造函数,每次都创建新RegExp实例。
RegExp实例方法:exec():该方法专门为捕获组设计。返回包含第一个匹配信息的数组;或者没有匹配的情况下返回null。同时返回项还包含额为的两个属性:index和input。数组中,第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配的字符串。即使在全局模式(g)下,它每次运行也只会返回一个匹配项,设置全局模式后,每次调用会在字符串中继续查找新匹配项(依赖于RegExp的lastIndex项)test():该方法只返回true或者false?