JavaScript 内置对象
JavaScript 中的所有事物都是对象。如:字符串、数值、数组、函数等。
JavaScript 中的每个对象带有属性和方法。
- 对象的属性:反映该对象某些特定的性质的。如:字符串的长度、图像的长宽等。
- 对象的方法:能够在对象上执行的动作。如:表单的 “提交”(Submit) ,时间的 “获取”(getYear) 等。
JavaScript 提供多个内建对象,比如 String 、Date 、Array 等,使用对象前要先定义。如下使用数组对象:
var objectArray = new Array(); // 使用 new 关键字定义数组对象
// 或者
var objectArray = [];
访问对象属性的语法:
objectName.propertyName
如使用 Array 对象的 length 属性来获得数组的长度:
var objectArray = new Array(len); // 定义数组对象
var arrayLength = objectArray.length; // 访问数组长度 length 属性
访问对象方法的语法:
objectName.methodName()
如使用 String 对象的 toUpperCase() 方法来将文本转换为大写:
var str = "JavaScript"; // 创建一个字符串
var newStr = str.toUpperCase(); // 使用字符串对象方法
Date 日期对象
日期对象可以储存任意一个日期,并且可以精确到毫秒数(1/1000 秒)。
定义一个时间对象 :
var date=new Date();
注意:使用关键字new,Date()的首字母必须大写。
日期对象 date 默认已有初始值,即当前时间 (当前电脑系统时间) 。
如果要自定义初始值,可以用以下方法:
var date1 = new Date(2019, 1, 1); // 2019年1月1日
var date2 = new Date('Jan 1, 2012'); // 2019年1月1日
输出日期:
var date = new Date();
document.write(date);
注意:不同浏览器,时间格式有差异。如火狐浏览器结果格式依次为:星期、月、日、年、时、分、秒、时区。
最好使用下面介绍的 “方法” 来严格定义时间。
访问方法语法:<日期对象>.<方法>
Date 对象中处理时间和日期的常用方法:
方法名称 | 功能描述 |
---|---|
get/setDate() | 返回/设置日期 |
get/setFullYear() | 返回设置年份,用四位数表示 |
get/setYear() | 返回设置年份 |
get/setMonth() | 返回设置月份,0:一月,… ,11:十二月 |
get/setDay() | 返回设置星期,1:星期一,… ,6:星期六,0:星期日 |
get/setHours() | 返回/设置时钟,24 小时制 |
get/setMinutes() | 返回/设置分钟 |
get/setSeconds() | 返回/设置秒钟 |
get/setTime() | 返回设置事件(单位:毫秒) |
返回/设置年份方法
get/setFullYear()
返回/设置年份,用四位数表示。
var date = new Date();
date.setFullYear(12);
注意:不同浏览器, date.setFullYear(12) 结果不同,年份被设定为 0012
或 12
两种情况。
返回月份/星期方法
getMonth() 返回月份,返回的是 0-11 的数字,0表示一月。
getDay() 返回星期,返回的是 0-6 的数字,0 表示星期天。
返回设置时间方法
get/setTime() 返回/设置时间,单位毫秒数,计算从 1970 年 1 月 1 日零时到日期对象所指的日期的毫秒数。
String 字符串对象
定义字符串对象的方法就是直接赋值。
var stringObject = "JavaScript!"
定义字符串对象后,就可以访问它的属性和方法。
访问字符串对象的属性 length :
stringObject.length; // 返回该字符串对象的长度。
访问字符串对象的方法:
stringObject.toUpperCase();
// 使用 String 对象的 toUpperCase() 方法来将字符串小写字母转换为大写:
返回指定位置的字符
charAt() 方法可返回指定位置的字符。返回的字符是长度为 1 的字符串。
语法:
stringObject.charAt(index);
说明:参数 index
表示字符串中某个位置的数字,即字符在字符串中的下标。
注意:
- 字符串中第一个字符的下标是 0 。最后一个字符的下标为字符串长度减一(stringObject.length-1)。
- 如果参数 index 不在 0 与 string.length-1 之间,该方法将返回一个空字符串。
- 一个空格也算一个字符。
返回指定的字符串首次出现的位置
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
语法:
stringObject.indexOf(substring, startpos);
说明:
- 参数
substring
规定需检索的字符串值 - 参数
startpos
可选的整数,规定在字符串开始检索的位置。合法取值范围在 0~stringObject.length-1 之间。如省略该参数,默认从字符串的首字符开始检索。
注意:
- 该方法将从头到尾地检索字符串 stringObject ,看它是否含有子串 substring 。
- 可选参数,从 stringObject 的 startpos 位置开始查找 substring 。如果没有此参数将从 stringObject 的开始位置查找,stringObject 中的字符位置是从 0 开始的。
- 如果找到一个 substring ,则返回 substring 的第一次出现的位置。如果要检索的字符串值没有出现,则该方法返回 -1 。
字符串分割
split() 方法将字符串分割为字符串数组,并返回此数组。
语法:
语法:
stringObject.split(separator,limit)
说明:
- 参数
separator
表示从指定的地方分割 stringObject - 参数
limit
可选整数,表示分割的次数。设置该参数,返回的子串不会多于这个参数指定的数组长度。如果省略则不限制分割次数。
注意:如果把空字符串 ("") 用作 separator,那么 stringObject 中的每个字符之间都会被分割。
提取字符串
substring() 方法用于提取字符串中介于两个指定下标之间的字符。
语法:
stringObject.substring(startPos,stopPos)
说明:
- 参数
startPos
,非负整数,表示开始位置。 - 参数
stopPos
,可选的非负整数,表示结束位置。如果省略则返回的子串会一直到字符串对象的结尾。
注意:
- 返回的内容是从 startPos 开始 (包含 startPos 位置的字符) 到 stopPos-1 处的所有字符,其长度为 stopPos-startPos 。
- 如果参数 startPos 与 stopPos 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。
- 如果 startPos 比 stopPos 大,那么该方法在提取子串之前会先交换这两个参数。
提取指定数目的字符
substr() 方法从字符串中提取从 startPos 位置开始的指定数目的字符串。
语法:
stringObject.substr(startPos,length)
说明:
- 参数
startPos
,整数,表示要提取的子串的起始位置。 - 参数
length
,可选的非负整数,表示要提取的字符串的长度。如果省略则返回从 stringObject 开始位置 startPos 到 stringObject 结尾的字符串。
注意:
- 如果参数 startPos 是负数,从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。
- 如果 startPos 为负数且绝对值大于字符串长度,startPos 为 0 。
Math 对象
Math 对象,提供对数据的数学计算。
注意:Math 对象是一个固有的对象,无需创建它,直接把 Math 作为对象使用就可以调用其所有属性和方法。这是它与 Date ,String 对象的区别。
Math 对象属性:
属性 | 说明 |
---|---|
PI | 返回圆周率(约等于 3.14159) |
E | 返回算术常量 e ,即自然对数的底数(约等于 2.718) |
LN2 | 返回 2 的自然对数(约等于 0.693) |
LN10 | 返回 10 的自然对数(约等于 2.302) |
LOG2E | 返回以 2 为底的 e 的对数(约等于 1.442) |
LOG10E | 返回以 10 为底的 e 的对数(约等于 0.434) |
SQRT1_2 | 返回 2 的平方根的倒数(约等于 0.707) |
SQRT2 | 返回 2 的平方根(约等于 1.414) |
Math 对象方法:
方法 | 描述 |
---|---|
abs(x) | 返回数 x 的绝对值 |
sqrt(x) | 返回数 x 的平方根 |
exp(x) | 返回数 x 的以 e 为底的指数值 |
log(x) | 返回数 x 的自然对数值(底为 e) |
ceil(x) | 返回对数 x 进行上舍入的整数 |
floor(x) | 返回对数 x 进行下舍入的整数 |
round(x) | 返回对数 x 进行四舍五入的整数 |
sin(x) | 返回数 x 的正弦值 |
cos(x) | 返回数 x 的余弦值 |
tan(x) | 返回数 x 的正切值 |
acos(x) | 返回数 x 的反余弦值 |
asin(x) | 返回数 x 的反正弦值 |
atan(x) | 返回数 x 的反正切值 |
atan2(y, x) | 返回由 x 轴到点 (x, y) 的角度(以弧度为单位) |
pow(x, y) | 返回数 x 的 y 次幂 |
max(x, y) | 返回数 x 和数 y 中的较大值 |
min(x, y) | 返回数 x 和数 y 中的较小值 |
random() | 返回 0~1 之间的随机数 |
toSource() | 返回对象的源代码 |
valueOf() | 返回 Math 对象的原始值 |
向上取整
ceil() 方法可对一个数进行向上取整。
语法:
Math.ceil(x)
说明:参数 x
必须是一个数值。
注意:它返回的是大于或等于数 x ,并且与 x 最接近的整数。
向上取整
floor() 方法可对一个数进行向上取整。
语法:
Math.floor(x)
说明:参数 x
必须是一个数值。
注意:它返回的是小于或等于数 x ,并且与 x 最接近的整数。
四舍五入
round() 方法可把一个数字四舍五入为最接近的整数。
语法:
Math.round(x)
说明:参数 x
必须是一个数值。
注意:
- 返回与数 x 最接近的整数。
- 如果 x 与两侧整数同等接近,则结果接近 +∞方向的数字值 。
随机数
random() 方法可返回介于 0 ~ 1(大于或等于 0 但小于 1 )之间的一个随机数。
语法:
Math.random();
注意:返回一个大于或等于 0 但小于 1 的符号为正的数字值。
取得介于 0 到 1 之间的一个随机数,代码如下:
<script type="text/javascript">
document.write(Math.random());
</script>
注意:因为是随机数,所以每次运行结果不一样,但都是 0 ~ 1 的数值。
获得 n~m 之间的随机数,代码如下:
<script type="text/javascript">
document.write((n + Math.random() * (m - n)));
</script>
Array 数组对象
数组对象是一个对象的集合,里边的对象可以是不同类型的。数组的每一个成员对象都有一个 “下标” ,用来表示它在数组中的位置,是从下标 ‘0’ 开始的
数组定义的方法:
- 定义了一个空数组:
var arrayObject = new Array();
- 定义时指定有 n 个空元素的数组:
var arrayObject = new Array(n);
- 定义数组的时候,直接初始化数据:
var arrayObject = [<元素1>, <元素2>, <元素3>...];
定义 array 数组,并赋值,代码如下:
var array = [1, 2, 3];
说明:定义了一个数组 array,里边的元素是:array[0] = 1; array[1] = 2; array[2] = 3。
数组元素使用:
数组名[下标] = 值;
注意: 数组的下标用方括号括起来,从 ‘0’ 开始。
数组属性:
length 用法:arrayObject.length
,返回数组的长度,即数组里有多少个元素。它等于数组里最后一个元素的下标加一。
数组方法:
sort() | 对数组的元素进行排序 |
reverse() | 颠倒数组中元素的顺序 |
slice() | 从某个已有的数组返回选定的元素 |
splice() | 删除元素,并向数组添加新元素 |
shift() | 删除并返回数组的第一个元素 |
pop() | 删除并返回数组的最后一个元素 |
unshift() | 向数组的开头添加一个或多个元素,并返回新的长度 |
push() | 向数组的末尾添加一个或多个元素,并返回新的长度 |
concat() | 连接两个或更多的数组,并返回结果 |
join() | 把数组中的元素连接为一个字符串。元素之间插入指定分隔符 |
toString() | 把数组转换为字符串,并返回结果 |
toLocaleString() | 把数组转换为本地数组,并返回结果 |
toSource() | 返回该对象的源代码 |
valueOf() | 返回数组对象的原始值 |
数组连接
concat() 方法用于连接两个或多个数组。此方法返回一个新数组,不改变原来的数组。
语法
arrayObject.concat(array1, array2, ... , arrayN)
说明:参数 array1
表示要连接的第一个数组,参数 arrayN
表示要连接的第 N 个数组。
注意: 该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
指定分隔符连接数组元素
join() 方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。
语法:
arrayObject.join(separator)
说明:参数 separator
指定要使用的分隔符。如果省略则默认使用逗号 ‘,’ 作为分隔符。
注意:返回的字符串是把数组中的各个元素串起来,用指定的分隔符置于元素与元素之间。这个方法不影响数组原本的内容。
颠倒数组元素顺序
reverse() 方法用于颠倒数组中元素的顺序。
语法:
arrayObject.reverse()
注意:该方法会改变原来的数组,而不会创建新的数组。
选定元素
slice() 方法可从已有的数组中返回选定的元素。
语法
arrayObject.slice(start, end)
说明:
- 参数
start
,整数,表示从何处开始选取。如果是负数,规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。 - 参数
end
,可选整数,表示从何处结束选取。该参数是数组片段结束处的元素下标。如果省略,那么切分的数组包含从start
到数组结束的所有元素。如果end
为负数,规定从数组尾部开始算起的元素。
注意:
- 返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。
- 该方法并不会修改数组,而是返回一个子数组。
- 可使用负值从数组的尾部选取元素。
- 如果 end 未被规定,那么 slice() 方法会选取从 start 到数组结尾的所有元素。
- String.slice() 与 Array.slice() 相似。
数组排序
sort() 方法使数组中的元素按照一定的顺序排列。
语法:
arrayObject.sort(sortMethod)
说明:
1.如果不指定方法函数 sortMethod
,则按 unicode 码顺序排列。
2.如果指定方法函数 sortMethod
,则按 sortMethod
所指定的排序方法排序。
注意: 该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
- 若返回值 <= -1,则表示 A 在排序后的序列中出现在 B 之前。
- 若 -1 < 返回值 < 1,则表示 A 和 B 具有相同的排序顺序。
- 若返回值 > =1,则表示 A 在排序后的序列中出现在 B 之后。
- 使用 sort() 将数组进行排序。代码如下:
<script type = "text/javascript">
var arr1 = new Array("Hello", "John", "love", "JavaScript");
var arr2 = new Array("80", "16", "50", "6", "100", "1");
document.write(myarr1.sort() + "<br>");
document.write(myarr2.sort());
</script>
注意:上面的代码没有按照数值的大小对数字进行排序。
- 如要实现这一点,就必须使用一个排序函数。代码如下:
<script type = "text/javascript">
function sortNum(a, b)
{
return a - b; // 升序,如降序,把 "a - b" 该成 "b - a"
}
var arr = new Array("80", "16", "50", "6", "100", "1");
document.write(arr + "<br>");
document.write(arr.sort(sortNum));
</script>