标签:
第五章 引用类型
var person = new Object( );
person.name = “Nicholas”;
person.age=29;
第二种是使用对象字面量表示法。如:
var person = {
name : “Nicholas”,
age : 29
};
在最后一个属性后面添加逗号,会在IE7及更早版本和Opera中导致错误。
如 var colors = [“yellow”,”red”,”green”];
alert(colors.join(“|”)); //yellow|red|green
如果不给join( )方法传入任何值,或者给它传入undefined,则使用逗号作为分隔符。IE7及更早版本会错误的使用字符串“undefined”作为分隔符。
var colors = ["red", "green", "blue"];
var colors2 = colors.concat("yellow",["black","brown"]);
colors //["red", "green", "blue"]
colors2 //["red", "green", "blue", "yellow", "black", "brown"]
var colors3=colors2.slice(1); //["green", "blue", "yellow", "black", "brown"]
var colors4 = colors2.slice(1,4); // ["green", "blue", "yellow"]
slice()方法的参数中有一个附属,则用数组长度加上该数来确定相应的位置。
var colors5 = colors2.slice(-2,-1); // ["black"]
删除:可以或删除任意数量的项,只需指定2个参数:要删除的第一项的位置,和要删除的项数;
插入:可以向指定位置插入任意数量的项,需指定3个参数:起始位置、0(要删除的项数)、要插入的项数。
替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,需指定3个参数:起始位置,要删除的项数、要插入的任意数量的项。
Splice( )方法始终都会返回一个数组,该数组中包含从原始数组中删除的项(如果没有删除任何项,则范湖一个空数组)。
var colors = ["red","green","blue"];
var removed = colors.splice(0,2);
colors //["blue"]
removed //["red", "green"]
removed = colors.splice(0,0,"yellow","orange"); //[]
colors //["yellow", "orange", "blue"]
removed = colors.splice(1,3,"red","pink"); //["orange", "blue", "yellow"]
colors //["yellow", "red", "pink", "orange"]
var colors = ["yellow", "orange", "blue"];
removed = colors.splice(1,2,"red","pink"); //["orange", "blue"]
colors //["yellow", "red", "pink"]
var numbers = [1,2,3,4,5,4,3,2,1];
numbers.indexOf(4); //3
numbers.indexOf("4"); //-1
numbers.lastIndexOf("4"); //-1
numbers.lastIndexOf(4); //5
numbers.indexOf(4,4); //从起始位置向后找
numbers.lastIndexOf(4,4) //3 从起始位置向前找
numbers.lastIndexOf(4,5) //5从起始位置向前找
var person ={name:"Nicholas"};
var people=[{name:"Nicholas"}];
var morePeople = [person];
people.indexOf(person); //-1
morePeople.indexOf(person); //0
every( ):对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true;
filter( ): 对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组;
forEach( ):对数组中的每一项运行给定函数,无返回值;
map( ):对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组;
some( ):对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true。
以上方法都不会修改数组中的包含的值。
Date.parse( )方法接收一个表示日期的字符串参数,然后尝试根据这个字符串返回相应日期的毫秒数。如果该字符串不能表示日期,则会返回NaN。
Date.UTC( )返回日期的毫秒数,但与Date.parse( )在构建时使用不同的信息。
ECMAScript 5添加了Date.now( )方法,返回表示调用这个方法时的日期和时间的毫秒数。
toDateString( )——以特定于实现的格式显示星期几、月、日和年;
toTimeString( )——以特定于实现的格式显示时、分、秒和时区;
toLocaleDateString( )——以特定于地区的格式显示星期几、月、日和年;
toLocaleTimeString( )——以特定于实现的格式显示时、分、秒;
toUTCString( )——以特定于实现的格式完整的UTC日期。
没有一个方法能够用来在用户界面中显示一致的日期信息。
g: 表示全局(global)模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即停止;
i : 表示不区分大小写模式,即在确定匹配项时忽略模式与字符串的大小写;
m:表示多行模式,即在到达一行文本末尾时还未继续查找下一行中,是否存在于模式匹配的项。记住:不往前找。
模式中使用的所有元字符都必须转义,正则表达式中的元字符包括:
( [ { \ ^ $ | } ? * + . ] }
使用RegExp构造函数创建正则表达式,两个参数:一个是要匹配的字符串模式,一个是可选的标志字符串。这两个参数都是字符串!
使用正则表达式字面量和使用RegExp构造函数创建的正则表达式不一样。在ECMAScript 3中,正则表达式字面量始终会共享同一个RegExp实例,而使用构造函数创建的每一个新RegExp实例都是一个新实例。但在ECMAScript5中,两者都会创建新的RegExp实例。
global:布尔值,表示是否设置了g标志;
ignoreCase: 布尔值,表示是否设置了i标志;
lastIndex : 整数,表示开始搜索下一个匹配项的字符位置,从0算起;
multiline: 布尔值,表示是否设置了m标志;
source:正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返回。
主要方法是exec( ),该方法是专门为捕获组而设计的。exec( )接收一个参数,即要应用模式的字符串,然后返回包含第一个匹配项信息的数组,若无匹配项,则返回null。返回的数组是Array的实例,但包含两个额外的属性:index和input。对于exec( )方法而言,不设置全局标志的情况下,在同一个字符串中多次调用exec( )将始终返回第一个匹配项的信息,而在设置全局标志的情况下,每次调用exec( )则都会在字符串中继续查找新匹配项。
test( )方法接收一个字符串参数,在模式与该参数匹配的情况下返回true,否则返回false。
正则表达式的valueOf( )方法返回正则表达式本身。
apply( )方法接收两个参数:一个是在其中运行函数的作用域,另一个是参数数组。其中第二个参数可以是Array的实例,也可以是arguments对象。
call( )方法与apply( )方法的作用个相同,它们的区别仅在于接收参数的方式不同。对于call( )方法而言,第一个参数是this值没有变化,变化的是其余参数都直接传递给函数。换句话说,在使用call( )时,传递给函数的参数必须逐个列举出来。
apply( )和call()最强大的地方在于能够扩充函数赖以运行的作用域。好处是对象不需要与方法有任何耦合关系。
ECMAScript 5 还定义了一个方法:bind( )。这个方法会创建一个函数的实例,其this值会被绑定到传给bind( )函数的值。
|
slice( ) |
substring( ) |
substr( ) |
||
第一个参数 |
指定字符串的开始位置 |
||||
第二个参数 |
指定子字符串最后一个字符后面的位置,若无则到结尾 |
指定返回字符的个数,若无则到结尾 |
|||
是否修改字符串本身的值 |
否 |
||||
参数为负值 |
将传入的负值与字符串的长度想家 |
把所有的负值参数转换为0 |
将负的第一个参数加上字符串的长度,将负的第二参数转换为0 |
||
|
indexOf( ) |
lastIndexOf( ) |
功能 |
从一个字符串中搜索给定的字符串,然后返字符串的位置,如果没有找到,则返回-1 |
|
区别 |
从字符串的开头向后搜索子字符串 |
从字符串的末尾向前搜索子字符串 |
match( )方法只接受一个参数,要么是一个正则表达式,要么是一个RegExp对象。返回一个数组,数组的第一项是与整个模式匹配的字符串,之后的每一项(如果有)保存着与正则表达式中的捕获组匹配的字符串。
search( )方法只接收一个参数,要么是一个正则表达式,要么是一个RegExp对象。返回字符串中第一个匹配项的索引,若无匹配项,则返回-1.该方法始终是从字符串开头向后查找模式。
replace( )方法接受两个参数:第一个参数可以是一个RegExp对象或者一个字符串(这个字符串不会被转换成正则表达式),第二个参数可以是一个字符串或者一个函数,此时函数接受3个参数:模式的匹配项、模式匹配项在字符串中的位置和原始字符串。
split( )可以基于指定的分隔符将一个字符串分割成多个子字符串,并将结果放在一组数组中,分隔符可以是字符串,也可以是一个RegExp对象(这个字符串不会被转换成正则表达式)。split( )方法可以接收可选的第二个参数,用于指定数组的大小,以确保返回的数组不会超过既定大小。
如果字符串在字母表中应该排在字符串参数之前,则返回一个负数(大多数情况下是-1,视情况而定);
如果字符串等于字符串参数,返回0;
如果字符串在字母表中应该排在字符串参数之后,则返回一个整数(大多数情况下是1,视情况而定)。
Global(全局)对象,不属于任何其他对象的属性和方法,最终都是它的属性和方法。Global对象的encodeURI( )和encodeURIComponent( )方法可以对URI( Uniform Resource Identifiers,通用资源标识符)进行编码,以便发给浏览器。其中,encodeURI( )主要用于整个URI,而encodeURIComponent( )主要用于对URI中的某一段进行编码。区别在于,encodeURI( )不会对本身属于URI的特殊字符进行编码,例如冒号、正斜杠、问号和井字号,而encodeURIComponent( )则会对它发现的任何非标准字符进行编码。encodeURI( )和encodeURIComponent( )对应的两个方法分别是decodeURI( )和decodeURIComponent( ),其中decodeURI( )只能对使用encodeURI( )替换的字符进行解码,同理,decodeURIComponent( )只能替换encodeURIComponent( )编码,即可以解码任何特殊字符的编码。
eval( )方法是ECMAScript语言中最强大的一个方法,就像一个完整的ECMAScript解析器,它只接收一个参数,即要执行的ECMAScript(或JavaScript)字符串。严格模式下,在外部访问不到eval( )中创建的任何变量或函数。
Math对象的属性见书134页。
Math对象的min( )和max( )方法。可接收任意多个数值参数。
舍入方法:Math.ceil( )向上舍入成最接近的整数;Math.floor( )向下舍入为最接近的整数,Math.round( )执行标准舍入,四舍五入为最接近的整数。
Random( )方法返回大于等于0小于1的一个随机数。
标签:
原文地址:http://www.cnblogs.com/rain-123/p/5225673.html