《JavaScript高级程序设计》学习笔记(对象1)

来源:互联网 发布:sketch3 mac激活码 编辑:程序博客网 时间:2024/06/06 00:59

 《JavaScript高级程序设计》学习笔记(对象1)

本地对象

本地对象(native object)定义:“独立于宿主环境的ECMAScript实现提供的对象”。
简单说来,本地对象就是ECMA-262定义的类(引用类型)。它们包括:
Object Function Array String Boolean Number Date RegExp Error 等

 

Array类

创建Array对象:
var arrayObj = new Array();

用参数size传递数组的大小:
var arrayObj = new Array([size]);

如果知道数组应该存放的值,还可用参数声明这些值,创建大小与参数个数相等的Array对象
var arrayObj = new Array([element0[, element1[, ...[, elementN]]]])

使用这两个方法,一点要使用方括号
例如:
var aValues = new Array();
aValues[0] = "a";
aValues[1] = "b";
每增加一个数组项,数组的大小就动态地增长。

与字符串类似,数组中的第一个项位于位置0,第二个项位于位置1,依此类推。
可通过使用方括号中放置要读取的项的位置来访问特定的项。
例如:
var aValues = new Array("a","b");
alert(aValues[1]);
显示"b"

可以用字面量表示定义Array对象,即使用方括号([和]),用逗号分隔值。
例如:
var aValues = ["a","b","c","d"];
注意:在这个例子中,未明确使用Array类。方括号暗示把其中的值存放在Array对象中。
用这种方式声明的数组与用传统方式声明的数组相同。


length 属性 得到数组的大小
与字符串的length属性一样,数组的length属性也是最后一个项的位置加1
例如:
var aValues = new Array("a","b");
alert(aValues.length);
显示"2"

数组可以根据需要增大或减小,如果要为前面定义的数组增加一项,只需把要存放的值放入下一个未使用的位置即可:
例如:
var aValues = new Array("a");
aValues[1] = "b";
aValues[4] = "e";
在这段代码中,下一个未使用的位置是1,所以值"b"将被赋予它。增加一项使数组的大小从1变成了2
如果把值放在这个数组的位置4处,将把位置2、3都填上值null,然后在位置4处放上正确的值,并把数组大小增大为5

注意:数组最多可以存放4294967295项,这应该可满足大多数程序设计的需要。如果要添加更多的项,则会发生异常。


toString() 方法和 valueOf() 方法 返回特殊的字符串
该字符串是通过对每项调用toString()方法,然后用逗号把它们连接在一起构成的。
例如:
var aValues = ["a","b","c","d"];
alert(aValues.toString());
结果显示"a,b,c,d"

类似的,toLocaleString()方法返回的也是由数组项构成的字符串。
唯一的区别是得到的值是通过调用每个数组项的toLocaleString()方法得到的。


join() 方法 连接字符串值
join()方法只有一个参数,即数组项之间使用的字符串。
例如:
var aValues = ["a","b","c","d"];
alert(aValues.join("-"));
结果显示"a-b-c-d"
任何字符串都可以用作分隔符,如上例的"-"
如果用","作分隔符,则本质上与调用toString()方法或valueOf()方法等价


split() 方法 把String类转换成数组
split()方法只有一个参数,该参数就是被看作数组项之间的分隔符的字符串
例如:
var sValue = "a-b-c-d";
aValues = sValue.split("-");

如果把空字符串声明为分隔符,那么split()方法返回的数组中的每个项是字符串的字符
例如:
var sValue = "abcd";
aValues = sValue.split("");
字符串"abcd"将被转换成字符串数组"a"、"b"、"c"、"d"


concat() 方法 返回一个新数组,这个新数组是由两个或更多数组组合而成的
例如:
var aValues = ["a","b"];
var aValues2 = aValues.concat("c","d");
alert(aValues2);
结果显示"a,b,c,d"


slice() 方法 返回具有特定项的新数组
Array类的slice()方法也接受一个或两个参数,即要提取的项的起始位置和结束位置。
如果只有一个参数,该方法将返回从该位置开始到数组结尾的所有项;
如果有两个参数,该方法将返回第一个位置和第二个位置间的所有项,不包括第二个位置处的项
注意:第一个数组的位置是0,有两个参数的时候,新数组项不包括第二个位置处的项,如果两个位置相同,即两个参数相同,将返回空数组项
例如:
var aValues = ["a","b","c","d"];
var aValues2 = aValues.slice(1,3);
alert(aValues2);
结果显示"b,c",即位置1和2的数组项


push() 方法 在Array结尾添加一个或多个项
pop() 方法 删除最后一个数组项(length-1),返回它作为函数值
shift() 方法 删除数组中的第一个项,将其作为函数值返回
unshift() 方法 把一个项放在数组的第一个位置,然后把余下的项向下移动一个位置

通过调用push()和pop()方法,可以使Array对象具有栈一样的行为。
通过调用shift()和push()方法,可以使Array对象具有队列一样的行为。


reverse() 方法 颠倒数组项的顺序
sort() 方法 根据数组项的值按升序为它们排序
注意:sort()方法会先调用toString()方法,将所有值转换成字符串,然后根据字符代码比较数组项,如果值是数字,也会转换成字符串再比较,所以"5"会排在"32"后面


splice() 方法
从一个数组中移除一个或多个元素,如果必要,在所移除元素的位置上插入新元素,返回所移除的元素

用途:
(1) 删除:只需要声明两个参数,就可以从数组中删除任意多个项,这两个参数是要删除的第一个项的位置和要删除的项的个数。
例如:arr.splice(0,2) 将删除数组arr中的前两项。

(2) 替换而不删除:声明三个参数就可以把数据项插入指定的位置,这三个参数是起始位置、0(要删除的数组项的个数)和要插入的项。此外,还可以用第四个、第五个或更多个参数指定其他要删除的项。
例如,arr.splice(2,0,"red", "green")将在位置2处插入"red"和"green"。

(3) 替换并删除:声明三个参数就可以把数据项插入指定的位置,这三个参数是起始位置、要删除的数组项的个数以及要插入的项。要插入的项的个数不必等于删除的项的个数。
例如,arr.splice(2,1, "red","green")将删除数组arr中位置2处的项,然后在位置2处插入"red"和"green"。

 

Date类

ECMAScript把日期存储为距离UTC时间1970年1月1日凌晨12点的毫秒数。
UTC是Universal Time Code,即通用时间代码(也叫做格林尼治标准时间)的缩写,是所有时区的基准标准时间。

创建新的Date对象:
var dateObj = new Date();

var dateObj = new Date(year, month, date[, hours[, minutes[, seconds[,ms]]]]) ;

创建新Date对象时,可以以两种方式设置日期和时间的值。

(一) 只声明距离 1970年1月1日凌晨12点的毫秒数dateVal:
var dateObj = new Date(dateVal);

parse()和UTC()两种方法可以与创建Date对象的方法一起使用

parse() 方法 解析一个包含日期的字符串,并返回该日期与1970年1月1日午夜之间所间隔的毫秒数
ECMA-262未定义parse()方法接受的日期格式,所以这由ECMAScript的实现特定,通常是地点特定的。
例如,在美国,大多数实现支持下面的日期格式:
mm/dd/yyyy(例如6/13/2004)
mmmm dd.yyyy(例如January 12,2004)
例如创建日期为2006年5月25日的Date对象:
var dateObj = new Date(Date.parse("May 25,2006"));

如果传递给parse()方法的字符串不能转换成日期,该函数返回NaN。

UTC() 方法 启用基本存储器并取得日期和时间
返回的也是日期的毫秒表示,参数是日期中的年、月、日、小时、分、秒和毫秒。
使用该方法时,必须声明年和月,其他参数可选。

特别注意:设置月份时要格外注意,因为它的值是从0到11,0代表一月,11代表十二月
还有小时采用24时制,而不是12时制
例如创建日期为2006年5月25日下午1:05分的Date对象:
var dateObj = new Date(Date.parse(2006,4,25,13,5));

(二) 直接声明UTC()方法接受的参数
例如:var dateObj = new Date(2006,4,25,13,5));
声明参数的顺序相同,除了年和月,其他参数可选。


valueOf() 方法 返回日期的毫秒表示
toString() 方法 返回由实现特定的字符串,采用人们可读懂的格式。

toString()方法根据不同地区返回不同的日期格式
其他用于创建特定日期的字符串表示的方法:
toDateString():以实现的特定的格式显示Date的日期部分(即只有月、日和年);
toTimeString():以实现的特定的格式显示Date的时间部分(即小时、分、秒和时区);
toLocaleString():以地点特定的格式显示Date的日期和时间;
toLocaleDateString():以地点特定的格式显示Date的日期部分;
toLocaleTimeString():以地点特定的格式显示Date的时间部分;
toUTCString():以实现特定的格式显示Date的UTC时间。
以上每种方法根据不同的实现和地点,输出不同的值,因此,使用它们时,必须多加练习。


Date类其余用于设置或获取日期值的方法:

方法   说明
getTime()  返回日期的毫秒表示
 
setTime(milliseconds) 设置日期的毫秒表示
 
getFullYear()  返回用四位数字表示的日期的年份(如2004而不只是04)
 
getUTCFullYear() 返回用四位数字表示的UTC日期的年份
 
setFullYear(year) 设置日期的年份,参数必须是四位数字的年份值
 
setUTCFullYear(year) 设置UTC日期的年份,参数必须是四位数字的年份值
 
getMonth()  返回日期的月份值,由数字0(1月)到11(12月)表示
 
getUTCMonth()  返回UTC日期的月份值,由数字0(1月)到11(12月)表示
 
setMonth(month)  设置日期的月份为大于等于0的数字。对于大于11的数字,开始累计年数
 
setUTCMonth(month) 设置UTC日期的月份为大于等于0的数字。对于大于11的数字,开始累计年数
 
getDate()  返回该日期该月中的某天
 
getUTCDate()  返回该UTC日期该月中的某天
 
setDate(date)  设置该日期该月中的某天
 
setUTCDate(date) 设置该UTC日期该月中的某天
 
getDay()  返回该日期为星期几
 
getUTCDay()  返回该UTC日期为星期几
 
setDay(day)  设置该日期为星期几
 
setUTCDay(day)  设置该UTC日期为星期几
 
getHours()  返回日期中的小时值
 
getUTCHours()  返回UTC日期中的小时值
 
setHours(hours)  设置日期中的小时值
 
setUTCHours(hours) 设置UTC日期中的小时值
 
getMinutes()  返回日期中的分钟值
 
getUTCMinutes()  返回UTC日期中的分钟值
 
setMinutes(minutes) 设置日期中的分钟值
 
setUTCMinutes(minutes) 设置UTC日期中的分钟值
 
getSeconds()  返回日期中的秒值
 
getUTCSeconds()  返回UTC日期中的秒值
 
setSeconds(seconds) 设置日期中的秒值
 
setUTCSeconds(seconds) 设置UTC日期中的秒值
 
getMilliseconds() 返回日期中的毫秒值。注意,这不是自1970年1月1日以后的毫秒值,而是当前时间中的毫秒值,例如4 :55 :34.20,其中20即为时间的毫秒值
 
getUTCMilliseconds() 返回UTC日期中的毫秒值
 
setMilliseconds(milliseconds) 设置日期中的毫秒值
 
setUTCMilliseconds(milliseconds) 设置UTC日期中的毫秒值
 
getTimezoneOffset() 返回用分钟表示的主计算机上的时间和全球标准时间 (UTC)之间的差别

原创粉丝点击