JavaScript的对象基础
本篇主要讲解本地对象Array和Date的各种方法。
一种面向对象语言需要向开发者提供四种基本能力:
(1) 封装——把相关的信息(无论数据或方法)存储在对象中的能力。
(2) 聚集——把一个对象存储在另一个对象内的能力。
(3) 继承——由另一个类(或多个类)得来类的属性和方法的能力。
(4) 多态——编写能以多种方法运行的函数或方法的能力。
1.本地对象包括:
①Array类
②Date类
2.内置对象
3.宿主对象
Array类
toString()方法和valueOf()方法,返回特殊的字符串。该字符串是通过对每项调用toString()方法,然后用逗号把它们连接在一起构成的。例如,对具有项"red"、"green"和"blue"的数组调用toString()方法或valueOf()方法,返回的是字符串"red,green,blue"。
join()方法唯一的用途就是连接字符串值。join()方法只有一个参数,即数组项之间使用的字符串。
split()方法将字符串转换成数组,split()方法只有一个参数,就是被看作数组项之间的分隔符的字符串。如果把空字符串声明为分隔符,那么split()方法返回的数组中的每个项是字符串的字符。
concat()方法处理数组的方式几乎与它处理字符串的方式完全一样。参数将被附加在数组末尾,返回的函数值是新的Array对象(包括原始数组中的项和新的项)。
slice()方法接受一个或两个参数,即要提取的项的起始位置和结束位置。如果只有一个参数,该方法将返回从该位置开始到数组结尾的所有项;如果有两个参数,该方法将返回第一个位置和第二个位置间的所有项,不包括第二个位置处的项。
unshift()方法,它把一个项放在数组的第一个位置,然后把余下的项向下移动一个位置。
reverse()方法颠倒数组项的顺序。
sort()方法将根据数组项的值按升序为它们排序。(注意:只是对字符串代码的排序,数字数组的排序需要另解)
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"。
栈和队列的概念
区别一
栈:后进先出(LIFO)结构,先添加的项先删除,栈中的插入和删除都只发生在栈顶部。
队列:先进先出(FIFO)结构,先添加的项最后删除,元素的插入操作只发生在队列的尾部,而删除操作则发生在队列的头部。
区别二
栈:顶部添加项叫“推入栈”,删除顶部项叫“弹出栈”。
队列:队尾添加项叫“put”或“入队”,队头删除项叫“get”或“出队”。
在Array类中的运用
栈:push()方法用于在Array结尾添加一个或多个项,pop()方法用于删除最后一个数组项(length-1),返回它作为函数值。
队列:push()方法把数据项加入队列(即在数组结尾添加数据项),shift()方法将删除数组中的第一个项,将其作为函数值返回。
Date类
Date类的方法(列在下表中)均用于设置或获取日期值的某部分。
方 法 |
说 明 |
toLocaleDateString() |
以地点特定的格式显示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日期中的毫秒值 |