JavaScript基础语法_JavaScript内置对象
JavaScript内置对象
- JavaScript中的对象分为3种:自定义对象,内置对象,浏览器对象
- 前两种对象是JS基础内容,属于ECMAScript;第三个浏览器对象属于js独有
- 内置对象就是指JS语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是最基本而必要的功能(属性和方法)
- 内置对象最大的优点就是帮助我们快速开发
- JavaScript提供了多个内置对象;Math,Date,Array,String等
Number Object
在 JavaScript 中可以使用十进制、十六进制或八进制表示法来表示整数或浮点数。与其它编程语言不同,JavaScript 中的数字并不区分整数和浮点数,统一使用 IEEE754 标准(二进制浮点数算术标准)的 64 位浮点格式表示数字,能表示的最大值(Number.MAX_VALUE)为 ±1.7976931348623157e+308,最小值(Number.MIN_VALUE)为 ±5e-324。
示例:
var x = 123; // 整数
var y = 3.14; // 浮点数
var z = 0xff; // 十六进制数:255
对于比较大的数字可以使用指数表示法来表示,例如 6.02e+23 等于 6.02 x 10²³,
示例:
//JavaScript 中能够表示的最大的整数是 2⁵³ - 1,即 9007199254740991,能够表示的最小整数是 -(2⁵³ - 1),即 -9007199254740991。
var x = 1.57e4; // 等于 15700
var y = 4.25e+6; // 等于 4250000
var z = 4.25e-6; // 等于 0.00000425
除了可以使用十进制表示数字外,您也可以使用八进制或十六进制表示法来表示数字,其中八进制表示法使用 0 作为前缀,十六进制表示法使用 0x 作为前缀,示例代码如下:
//整数可以用十进制、十六进制和八进制表示法表示,浮点数可以用十进制或指数表示法表示。
var a = 0377; // 等于 255
var b = 0123; // 等于 83
var c = 0xff; // 等于 255
var d = 0xb4; // 等于 180
±Infinity(无穷)
Infinity 是一个特殊的值,表示无穷大。当一个表达式的运算结果超过了 JavaScript 所能表示的数字上限或下限时,JavaScript 就会使用 Infinity 或 -Infinity 表示这个结果,其中 Infinity 表示正无穷大,-Infinity 表示负无穷大。
示例:
var a = 5 / 0; // 等于 Infinity
var b = -5 / 0; // 等于 -Infinity
NaN(非数字)
NaN 同样是 JavaScript 中的一个特殊值,用来表示某个值不是数字。NaN 不等于(通过 、!=、=、!=== 比较)其它任何值(包括另外一个 NaN 值),使用 isNaN() 函数可以判断一个数是否为 NaN。
以下几种操作会返回 NaN:
- 使用函数无法将参数转换为数字时会返回 NaN,例如 parseInt(“abc”)、new Number(“abc”);
- 结果不是实数的数学运算,例如 Math.sqrt(-1);
- 任何操作数中包含 NaN 的表达式,例如 5 * NaN;
- 涉及字符串的非加法运算,且字符串无法自动转换为数字,例如 “foo” / 5。
Number 对象
Number 对象是原始数值的包装对象,创建 Number 对象的语法格式如下:
var myNum = new Number(value);
var myNum = Number(value);
其中 value 为要创建的 Number 对象的数值,若 value 为一个非数字的值,则会尝试将其转换为数字,若转换失败则会返回 NaN。
当 Number() 函数和 new 运算符一起使用时,会创建一个新的 Number 对象。如果不用 new 运算符,把 Number() 当作一个函数来调用,则会将其中的参数转换为一个数值,并且返回这个值(如果转换失败,则返回 NaN)。
示例:
var a = new Number("123");
var b = Number("456");
var c = 789;
var d = new Number("abc");
document.write(typeof a + "<br>"); // 输出:object
document.write(typeof b + "<br>"); // 输出:number
document.write(typeof c + "<br>"); // 输出:number
document.write(d + "<br>"); // 输出:NaN
Number 属性
Number 对象中提供了一些属性,如下表所示:
| 属性 | 描述 |
|---|---|
| Number.MAX_VALUE | JavaScript 中所能表示的最大值 |
| Number.MIN_VALUE | JavaScript 中所能表示的最小值 |
| Number.NaN | 非数字 |
| Number.NEGATIVE_INFINITY | 负无穷,在溢出时返回 |
| Number.POSITIVE_INFINITY | 正无穷,在溢出时返回 |
| Number.EPSILON | 表示 1 与 Number 所能表示的大于 1 的最小浮点数之间的差 |
| Number.MIN_SAFE_INTEGER | 最小安全整数,即 -9007199254740991 |
| Number.MAX_SAFE_INTEGER | 最大安全整数,即 9007199254740991 |
Number 方法
除了属性外,Number 对象中还提供了一些方法,如下表所示:
| 方法 | 描述 |
|---|---|
| Number.parseFloat() | 将字符串转换成浮点数,和全局方法 parseFloat() 作用相同 |
| Number.parseInt() | 将字符串转换成整型数字,和全局方法 parseInt() 作用相同 |
| Number.isFinite() | 判断 Number 对象是否为有穷数 |
| Number.isInteger() | 判断 Number 对象是否为整数 |
| Number.isNaN() | 判断 Number 对象是否为 NaN 类型 |
| Number.isSafeInteger() | 判断 Number 对象是否为安全整数,即范围为 -(2⁵³ - 1)到 2⁵³ - 1 之间的整数 |
| Number.toString() | 把 Number 对象转换为字符串,使用指定的基数 |
| Number.toLocaleString() | 把 Number 对象转换为字符串,使用本地数字格式顺序 |
| Number.toFixed() | 把 Number 对象转换为字符串,结果的小数点后有指定位数的数字 |
| Number.toExponential() | 把 Number 对象的值转换为指数计数法 |
| Number.toPrecision() | 把 Number 对象格式化为指定的长度 |
| Number.valueOf() | 返回一个 Number 对象的基本数字值 |
String Object
JavaScript String 对象用于处理字符串,其中提供了大量操作字符串的方法,以及一些属性。
创建 String 对象的语法格式如下:
//参数 value 为要创建的字符串或字符串对象。
var val = new String(value);
var val = String(value);
JavaScript 中,字符串和字符串对象之间能够自由转换,因此不论是创建字符串对象还是直接声明字符串类型的变量,都可以直接使用字符串对象中提供的方法和属性。
String 对象中的属性
下表中列举了 String 对象中提供的属性及其描述信息:
| 属性 | 描述 |
|---|---|
| constructor | 获取创建此对象的 String() 函数的引用 |
| length | 获取字符串的长度 |
| prototype | 通过该属性您可以向对象中添加属性和方法 |
示例:
var str = new String('JavaScript');
String.prototype.name = null;
str.name = "Hello World!";
console.log(str.constructor); // 输出:function String() { [native code] }
console.log(str.length); // 输出:10
console.log(str.name); // 输出:Hello World!

String 对象中的方法
下表中列举了 String 对象中提供的方法及其描述信息:
| 方法 | 描述 |
|---|---|
| anchor() | 创建一个 HTML 锚点,即生成一个标签,标签的 name 属性为 anchor() 方法中的参数 |
| big() | 用大号字体显示字符串 |
| blink() | 显示闪动的字符串 |
| bold() | 使用粗体显示字符串 |
| charAt() | 返回在指定位置的字符 |
| charCodeAt() | 返回指定字符的 Unicode 编码 |
| concat() | 拼接字符串 |
| fixed() | 以打字机文本显示字符串 |
| fontcolor() | 使用指定的颜色来显示字符串 |
| fontsize() | 使用指定的尺寸来显示字符串 |
| fromCharCode() | 将字符编码转换为一个字符串 |
| indexOf() | 检索字符串,获取给定字符串在字符串对象中首次出现的位置 |
| italics() | 使用斜体显示字符串 |
| lastIndexOf() | 获取给定字符串在字符串对象中最后出现的位置 |
| link() | 将字符串显示为链接 |
| localeCompare() | 返回一个数字,并使用该数字来表示字符串对象是大于、小于还是等于给定字符串 |
| match() | 根据正则表达式匹配字符串中的字符 |
| replace() | 替换与正则表达式匹配的子字符串 |
| search() | 获取与正则表达式相匹配字符串首次出现的位置 |
| slice() | 截取字符串的片断,并将其返回 |
| small() | 使用小字号来显示字符串 |
| split() | 根据给定字符将字符串分割为字符串数组 |
| strike() | 使用删除线来显示字符串 |
| sub() | 把字符串显示为下标 |
| substr() | 从指定索引位置截取指定长度的字符串 |
| substring() | 截取字符串中两个指定的索引之间的字符 |
| sup() | 把字符串显示为上标 |
| toLocaleLowerCase() | 把字符串转换为小写 |
| toLocaleUpperCase() | 把字符串转换为大写 |
| toLowerCase() | 把字符串转换为小写 |
| toUpperCase() | 把字符串转换为大写 |
| toString() | 返回字符串 |
| valueOf() | 返回某个字符串对象的原始值 |
示例:
var str = new String('JavaScript教程');
document.write(str.anchor("myanchor") + "<br>"); // 生成一段 HTML 代码:<a name="myanchor">JavaScript教程</a>
document.write(str.big() + "<br>"); // 生成一段 HTML 代码:<big>JavaScript教程</big>
document.write(str.blink() + "<br>"); // 生成一段 HTML 代码:<blink>JavaScript教程</blink>
document.write(str.bold() + "<br>"); // 生成一段 HTML 代码:<b>JavaScript教程</b>
document.write(str.charAt(10) + "<br>"); // 获取 str 中的第 11 个字符,输出:教
document.write(str.charCodeAt(10) + "<br>"); // 获取 str 中第 11 个字符的 Unicode 编码,输出:25945
document.write(str.concat(" String 对象") + "<br>"); // 将字符串“ String 对象”拼接到字符串 str 之后,输出:JavaScript教程 String 对象
document.write(str.fixed() + "<br>"); // 生成一段 HTML 代码:<tt>JavaScript教程</tt>
document.write(str.fontcolor("red") + "<br>"); // 生成一段 HTML 代码:<font color="red">JavaScript教程</font>
document.write(str.fontsize(2) + "<br>"); // 生成一段 HTML 代码:<font size="2">JavaScript教程</font>
document.write(String.fromCharCode(72,69,76,76,79) + "<br>"); // 将 Unicode 编码转换为具体的字符,输出:HELLO
document.write(str.indexOf("Script") + "<br>"); // 获取字符串“Script”在 str 中首次出现的为,输出:4
document.write(str.italics() + "<br>"); // 生成一段 HTML 代码:<i>JavaScript教程</i>
document.write(str.lastIndexOf("a") + "<br>"); // 获取字符串“a”在 str 中最后一次出现的位置,输出 3
document.write(str.link("http://c.biancheng.net/") + "<br>"); // 生成一段 HTML 代码:<a href="http://c.biancheng.net/">JavaScript教程</a>
document.write(str.localeCompare("JavaScript") + "<br>"); // 比较字符串对象与给定字符串,返回:1
document.write(str.match(/[abc]/g) + "<br>"); // 根据正则 /[abc]/g 检索 str,返回:a,a,c
document.write(str.replace(/[abc]/g, "Y") + "<br>"); // 使用字符串“Y”替换正则 /[abc]/g 匹配的字符,返回:JYvYSYript教程
document.write(str.search(/[Script]/g) + "<br>"); // 获取与正则匹配的字符串首次出现的位置,返回:4
document.write(str.slice(6,11) + "<br>"); // 截取字符串(获取 str 中第 7 到第 11 个字符),返回:ript教
document.write(str.small() + "<br>"); // 生成一段 HTML 代码:<small>JavaScript教程</small>
document.write(str.split("a") + "<br>"); // 根据“a”将字符串 str 拆分为数组,返回:J,v,Script教程
document.write(str.strike() + "<br>"); // 生成一段 HTML 代码:<strike>JavaScript教程</strike>
document.write(str.sub() + "<br>"); // 生成一段 HTML 代码:<sub>JavaScript教程</sub>
document.write(str.substr(3, 7) + "<br>"); // 从第 4 个字符开始,向后截取 7 个字符,返回:aScript
document.write(str.substring(3, 7) + "<br>"); // 截取字符串(获取 str 中第 4 到第 7 个字符),返回:aScr
document.write(str.sup() + "<br>"); // 生成一段 HTML 代码:<sup>JavaScript教程</sup>
document.write(str.toLocaleLowerCase() + "<br>"); // 返回:javascript教程
document.write(str.toLocaleUpperCase() + "<br>"); // 返回:JAVASCRIPT教程
document.write(str.toLowerCase() + "<br>"); // 返回:javascript教程
document.write(str.toUpperCase() + "<br>"); // 返回:JAVASCRIPT教程
document.write(str.toString() + "<br>"); // 返回:JavaScript教程
document.write(str.valueOf() + "<br>"); // 返回:JavaScript教程

特殊字符
通过前面的学习我们知道,可以使用单引号和双引号来定义字符串,但如果字符串中也需要添加单引号或双引号该怎么办呢?我们可以使用反斜线\来转义字符串中的引号,
示例:
var str1 = "He said \"Goodbye\"";
var str2 = 'it\'s okay';
除了单引号和双引号外,JavaScript 中还提供了一些能够使用反斜线转义的特殊字符,如下表所示:
| 代码 | 输出 | 代码 | 输出 |
|---|---|---|---|
| ’ | 单引号 | \r | 回车 |
| " | 双引号 | \t | tab |
| \ | 反斜线本身 | \b | 空格 |
| \n | 换行 | \f | 换页 |
Array Object
数组是值的有序集合,数组中的每个值称为一个元素,每个元素在数组中都有一个数字位置,称为索引,索引从 0 开始,依次递增。在 JavaScript 中,您可以使用 Array 对象定义数组,此外,Array 对象中还提供了各种有关数组的属性和方法。
创建 Array 对象的语法格式如下:
//values 为数组中各个元素组成的列表,多个元素之间使用逗号分隔。
var arr = new Array(values);
var arr = Array(values);
示例:
//在使用 new Array() 来定义数组时,如果只提供一个数值参数,那么这个数值将用来表示数组的初始长度,例如new Array(5)表示定义一个长度为 5 的数组。JavaScript 中,数组允许的最大长度为 2³²-1,即 4294967295。
var fruits = new Array( "apple", "orange", "mango" );
console.log(fruits); // 输出:["apple", "orange", "mango"]
除了可以使用 Array() 函数来定义数组外,您也可以直接使用方括号[ ]来定义数组,[ ]中为数组中的各个元素,多个元素之间使用逗号,进行分隔。示例代码如下:
var fruits = [ "apple", "orange", "mango" ];
console.log(fruits); // 输出:(3) ["apple", "orange", "mango"]
可以通过数组的索引来访问数组中的各个元素,示例代码如下:
var fruits = [ "apple", "orange", "mango" ];
document.write(fruits[0] + "<br>"); // 输出:apple
document.write(fruits[1] + "<br>"); // 输出:orange
document.write(fruits[2] + "<br>"); // 输出:mango
Array 对象中的属性
下表中列举了 Array 对象中提供的属性及其描述信息:
| 属性 | 描述 |
|---|---|
| constructor | 返回创建数组对象的原型函数 |
| length | 设置或返回数组中元素的个数 |
| prototype | 通过该属性您可以向对象中添加属性和方法 |
示例:
var cars = new Array("Saab", "Volvo", "BMW");
Array.prototype.name = null;
cars.name = "JavaScript";
document.write(cars.constructor + "<br>"); // 输出:function Array() { [native code] }
document.write(cars.length + "<br>"); // 输出:3
document.write(cars.name + "<br>"); // 输出:JavaScript
Array 对象中的方法
下表中列举了 Array 对象中提供的方法及其描述信息:
| 方法 | 描述 |
|---|---|
| concat() | 拼接两个或更多的数组,并返回结果 |
| copyWithin() | 从数组的指定位置拷贝元素到数组的另一个指定位置中 |
| entries() | 返回数组的可迭代对象 |
| every() | 检测数值元素的每个元素是否都符合条件 |
| fill() | 使用一个固定值来填充数组 |
| filter() | 检测数值元素,并返回符合条件所有元素的数组 |
| find() | 返回符合传入函数条件的数组元素 |
| findIndex() | 返回符合传入函数条件的数组元素索引 |
| forEach() | 数组每个元素都执行一次回调函数 |
| from() | 通过给定的对象中创建一个数组 |
| includes() | 判断一个数组是否包含一个指定的值 |
| indexOf() | 搜索数组中的元素,并返回它所在的位置 |
| isArray() | 判断对象是否为数组 |
| join() | 把数组的所有元素放入一个字符串 |
| keys() | 返回数组的可迭代对象,包含原始数组的键(key) |
| lastIndexOf() | 搜索数组中的元素,并返回它最后出现的位置 |
| map() | 通过指定函数处理数组的每个元素,并返回处理后的数组 |
| pop() | 删除数组的最后一个元素并返回删除的元素 |
| push() | 向数组的末尾添加一个或更多元素,并返回数组的长度 |
| reduce() | 累加(从左到右)数组中的所有元素,并返回结果 |
| reduceRight() | 累加(从右到左)数组中的所有元素,并返回结果 |
| reverse() | 反转数组中元素的顺序 |
| shift() | 删除并返回数组的第一个元素 |
| slice() | 截取数组的一部分,并返回这个新的数组 |
| some() | 检测数组元素中是否有元素符合指定条件 |
| sort() | 对数组的元素进行排序 |
| splice() | 从数组中添加或删除元素 |
| toString() | 把数组转换为字符串,并返回结果 |
| unshift() | 向数组的开头添加一个或多个元素,并返回新数组的长度 |
| valueOf() | 返回数组对象的原始值 |
示例:
var fruits = ["Orange", "Banana", "Apple", "Papaya", "Mango"];
document.write(fruits.entries() + "<br>"); // 返回:[object Array Iterator]
document.write(fruits.includes("Apple") + "<br>"); // 返回:true
document.write(fruits.fill("grape") + "<br>"); // 返回:grape,grape,grape,grape,grape
var fruits = ["Orange", "Banana", "Apple", "Papaya", "Mango"];
document.write(fruits.indexOf("Mango") + "<br>"); // 返回:4
document.write(Array.isArray(fruits) + "<br>"); // 返回:true
document.write(fruits.join("-") + "<br>"); // 返回:Orange-Banana-Apple-Papaya-Mango
document.write(fruits.lastIndexOf("Banana") + "<br>"); // 返回:1
document.write(fruits.pop() + "<br>"); // 返回:Mango
document.write(fruits.push("Watermelon") + "<br>"); // 返回:5
document.write(fruits.unshift("Lemon","Pineapple") + "<br>"); // 返回:7
document.write(fruits.slice(1, 5) + "<br>"); // 返回:Pineapple,Orange,Banana,Apple
document.write(fruits.sort() + "<br>"); // 返回:Apple,Banana,Lemon,Orange,Papaya,Pineapple,Watermelon
document.write(fruits.valueOf() + "<br>"); // 返回:Apple,Banana,Lemon,Orange,Papaya,Pineapple,Watermelon

Date Object
Date 对象是 JavaScript 内置的对象,通过它您可以访问计算机系统的时间,此外,Date 对象中还提供了多种用于管理、操作和格式化时间/日期的方法。
创建 Date 对象
在开始处理时间和日期之前,我们需要先创建一个 Date 对象。与其他对象(数组对象、字符串对象等)不同,Date 对象不能直接声明,必须通过 Date() 函数定义。
JavaScript 中提供了四种不同的方法来创建 Date 对象
var time = new Date();
var time = new Date(milliseconds);
var time = new Date(datestring);
var time = new Date(year, month, date[, hour, minute, second, millisecond]);
参数说明如下:
- 不提供参数:若调用 Date() 函数时不提供参数,则创建一个包含当前时间和日期的 Date 对象;
- milliseconds(毫秒):若提供一个数值作为参数,则会将这个参数视为一个以毫秒为单位的时间值,并返回自 1970-01-01 00:00:00 起,经过指定毫秒数的时间,例如 new Date(5000) 会返回一个 1970-01-01 00:00:00 经过 5000 毫秒之后的时间;
- datestring(日期字符串):若提供一个字符串形式的日期作为参数,则会将其转换为具体的时间,日期的字符串形式有两种,如下所示:
- YYYY/MM/dd HH:mm:ss(推荐):若省略时间部分,则返回的 Date 对象的时间为 00:00:00;
- YYYY-MM-dd HH:mm:ss:若省略时间部分,则返回的 Date 对象的时间为 08:00:00(加上本地时区),若不省略,在 IE 浏览器中会转换失败。
- 将具体的年月日、时分秒转换为 Date 对象,其中:
- year:表示年,为了避免错误的产生,推荐使用四位的数字来表示年份;
- month:表示月,0 代表 1 月,1 代表 2 月,以此类推;
- date:表示月份中的某一天,1 代表 1 号,2 代表 2 号,以此类推;
- hour:表示时,以 24 小时制表示,取值范围为 0 ~ 23;
- minute:表示分,取值范围为 0 ~ 59;
- second:表示秒,取值范围为 0 ~ 59;
- millisecond:表示毫秒,取值范围为 0 ~ 999。
示例:
var time1 = new Date();
var time2 = new Date(1517356800000);
var time3 = new Date("2018/12/25 12:13:14");
var time4 = new Date(2020, 9, 12, 15, 16, 17);
console.log(time1); // 输出:Fri Jul 23 2021 13:41:39 GMT+0800 (中国标准时间)
console.log(time2); // 输出:Wed Jan 31 2018 08:00:00 GMT+0800 (中国标准时间)
console.log(time3); // 输出:Tue Dec 25 2018 12:13:14 GMT+0800 (中国标准时间)
console.log(time4); // 输出:Mon Oct 12 2020 15:16:17 GMT+0800 (中国标准时间)

Date 对象中的属性
下表中列举了 Date 属性中提供的属性及其描述:
| 属性 | 描述 |
|---|---|
| constructor | 返回创建 Date 对象的原型函数 |
| prototype | 通过该属性您可以向对象中添加属性和方法 |
示例:
var time = new Date();
Date.prototype.name = null;
time.name = "JavaScript";
console.log(time.constructor); // 输出:function Date() { [native code] }
console.log(time.name); // 输出:JavaScript
Date 对象中的方法
下表中列举了 Date 属性中提供的方法及其描述:
| 方法 | 描述 |
|---|---|
| getDate() | 从 Date 对象返回一个月中的某一天 (1 ~ 31) |
| getDay() | 从 Date 对象返回一周中的某一天 (0 ~ 6) |
| getMonth() | 从 Date 对象返回月份 (0 ~ 11) |
| getFullYear() | 从 Date 对象返回四位数字的年份 |
| getYear() | 已废弃,请使用 getFullYear() 方法代替 |
| getHours() | 返回 Date 对象的小时 (0 ~ 23) |
| getMinutes() | 返回 Date 对象的分钟 (0 ~ 59) |
| getSeconds() | 返回 Date 对象的秒数 (0 ~ 59) |
| getMilliseconds() | 返回 Date 对象的毫秒(0 ~ 999) |
| getTime() | 返回 1970 年 1 月 1 日至今的毫秒数 |
| getTimezoneOffset() | 返回本地时间与格林威治标准时间 (GMT) 的分钟差 |
| getUTCDate() | 根据通用时间从 Date 对象返回月中的一天 (1 ~ 31) |
| getUTCDay() | 根据通用时间从 Date 对象返回周中的一天 (0 ~ 6) |
| getUTCMonth() | 根据通用时间从 Date 对象返回月份 (0 ~ 11) |
| getUTCFullYear() | 根据通用时间从 Date 对象返回四位数的年份 |
| getUTCHours() | 根据通用时间返回 Date 对象的小时 (0 ~ 23) |
| getUTCMinutes() | 根据通用时间返回 Date 对象的分钟 (0 ~ 59) |
| getUTCSeconds() | 根据通用时间返回 Date 对象的秒钟 (0 ~ 59) |
| getUTCMilliseconds() | 根据通用时间返回 Date 对象的毫秒(0 ~ 999) |
| parse() | 返回1970年1月1日午夜到指定日期(字符串)的毫秒数 |
| setDate() | 设置 Date 对象中月的某一天 (1 ~ 31) |
| setMonth() | 设置 Date 对象中月份 (0 ~ 11) |
| setFullYear() | 设置 Date 对象中的年份(四位数字) |
| setYear() | 已废弃,请使用 setFullYear() 方法代替 |
| setHours() | 设置 Date 对象中的小时 (0 ~ 23) |
| setMinutes() | 设置 Date 对象中的分钟 (0 ~ 59) |
| setSeconds() | 设置 Date 对象中的秒钟 (0 ~ 59) |
| setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999) | |
| setTime() | 以毫秒设置 Date 对象 |
| setUTCDate() | 根据通用时间设置 Date 对象中月份的一天 (1 ~ 31) |
| setUTCMonth() | 根据通用时间设置 Date 对象中的月份 (0 ~ 11) |
| setUTCFullYear() | 根据通用时间设置 Date 对象中的年份(四位数字) |
| setUTCHours() | 根据通用时间设置 Date 对象中的小时 (0 ~ 23) |
| setUTCMinutes() | 根据通用时间设置 Date 对象中的分钟 (0 ~ 59) |
| setUTCSeconds() | 根据通用时间设置 Date 对象中的秒钟 (0 ~ 59) |
| setUTCMilliseconds() | 根据通用时间设置 Date 对象中的毫秒 (0 ~ 999) |
| toSource() | 返回该对象的源代码 |
| toString() | 把 Date 对象转换为字符串 |
| toTimeString() | 把 Date 对象的时间部分转换为字符串 |
| toDateString() | 把 Date 对象的日期部分转换为字符串 |
| toGMTString() | 已废弃,请使用 toUTCString() 方法代替 |
| toUTCString() | 根据通用时间,把 Date 对象转换为字符串 |
| toLocaleString() | 根据本地时间格式,把 Date 对象转换为字符串 |
| toLocaleTimeString() | 根据本地时间格式,把 Date 对象的时间部分转换为字符串 |
| toLocaleDateString() | 根据本地时间格式,把 Date 对象的日期部分转换为字符串 |
| UTC() | 根据通用时间返回 1970 年 1 月 1 日 到指定日期的毫秒数 |
| valueOf() | 返回 Date 对象的原始值 |
示例:
var time = new Date();
console.log(time.getDate()); // 输出:23
console.log(time.getDay()); // 输出:5
console.log(time.getFullYear()); // 输出:2021
console.log(time.getHours()); // 输出:16
console.log(time.getMonth()); // 输出:6
console.log(time.getTime()); // 输出:1627028869285
console.log(time.getUTCDate()); // 输出:23
console.log(time.toDateString()); // 输出:Fri Jul 23 2021
console.log(time.toString()); // 输出:Fri Jul 23 2021 16:29:57 GMT+0800 (中国标准时间)
console.log(time.toLocaleDateString()); // 输出:2021/7/23
console.log(time.toLocaleTimeString()); // 输出:下午4:31:00
console.log(time.toLocaleString()); // 输出:2021/7/23下午4:31:00

Math Object
Math 是 JavaScript 中的一个内置对象,其中提供了一些数学中常用的常量值和函数,用来实现一些数学中常见计算,例如计算平均数、求绝对值、四舍五入等。
与前面介绍的几个对象(例如 Number 对象、String 对象、Array 对象等)不同,调用 Math 对象中的属性和方法无需预先使用 new 运算符来创建它,直接将 Math 作为对象调用即可,例如:
var pi_val = Math.PI; // 数学中 π 的值:3.141592653589793
var abs_val = Math.sin(-5.35); // -5.35 的绝对值:5.35
Math 对象中的属性
下表中列举了 Math 对象中提供的属性及其描述信息:
| 属性 | 描述 |
|---|---|
| E | 返回算术常量 e,即自然对数的底数(约等于 2.718) |
| LN2 | 返回 2 的自然对数(约等于 0.693) |
| LN10 | 返回 10 的自然对数(约等于 2.302) |
| LOG2E | 返回以 2 为底的 e 的对数(约等于 1.443) |
| LOG10E | 返回以 10 为底的 e 的对数(约等于 0.434) |
| PI | 返回圆周率 π(约等于 3.14159) |
| SQRT1_2 | 返回返回 2 的平方根的倒数(约等于 0.707) |
| SQRT2 | 返回 2 的平方根(约等于 1.414) |
示例:
console.log(Math.E); // 输出:2.718281828459045
console.log(Math.LN2); // 输出:0.6931471805599453
console.log(Math.LN10); // 输出:2.302585092994046
console.log(Math.LOG2E); // 输出:1.4426950408889634
console.log(Math.LOG10E); // 输出:0.4342944819032518
console.log(Math.PI); // 输出:3.141592653589793
console.log(Math.SQRT1_2); // 输出:0.7071067811865476
console.log(Math.SQRT2); // 输出:1.4142135623730951

Math 对象中的方法
下表中列举了 Math 对象中提供的方法及其描述信息:
| 方法 | 描述 |
|---|---|
| abs(x) | 返回 x 的绝对值 |
| acos(x) | 返回 x 的反余弦值 |
| acosh(x) | 返回 x 的反双曲余弦值 |
| asin(x) | 返回 x 的反正弦值 |
| asinh(x) | 返回 x 的反双曲正弦值 |
| atan(x) | 返回 x 的反正切值 |
| atanh(x) | 返回 x 的反双曲正切值 |
| atan2(y,x) | 返回 y/x 的反正切值 |
| cbrt(x) | 返回 x 的立方根 |
| ceil(x) | 对 x 进行向上取整,即返回大于 x 的最小整数 |
| clz32(x) | 返回将 x 转换成 32 无符号整形数字的二进制形式后,开头 0 的个数 |
| cos(x) | 返回 x 的余弦值 |
| cosh(x) | 返回 x 的双曲余弦值 |
| exp(x) | 返回算术常量 e 的 x 次方,即 Ex |
| expm1(x) | 返回 exp(x) - 1 的值 |
| floor(x) | 对 x 进行向下取整,即返回小于 x 的最大整数 |
| fround(x) | 返回最接近 x 的单精度浮点数 |
| hypot([x, [y, […]]]) | 返回所有参数平方和的平方根 |
| imul(x, y) | 将参数 x、y 分别转换位 32 位整数,并返回它们相乘后的结果 |
| log(x) | 返回 x 的自然对数 |
| log1p(x) | 返回 x 加 1 后的自然对数 |
| log10(x) | 返回 x 以 10 为底的对数 |
| log2(x) | 返回 x 以 2 为底的对数 |
| max([x, [y, […]]]) | 返回多个参数中的最大值 |
| min([x, [y, […]]]) | 返回多个参数中的最小值 |
| pow(x,y) | 返回 x 的 y 次幂 |
| random() | 返回一个 0 到 1 之间的随机数 |
| round(x) | 返回 x 四舍五入后的整数 |
| sign(x) | 返回 x 的符号,即一个数是正数、负数还是 0 |
| sin(x) | 返回 x 的正弦值 |
| sinh(x) | 返回 x 的双曲正弦值 |
| sqrt(x) | 返回 x 的平方根 |
| tan(x) | 返回 x 的正切值 |
| tanh(x) | 返回 x 的双曲正切值 |
| toSource() | 返回字符串"Math" |
| trunc(x) | 返回 x 的整数部分 |
| valueOf() | 返回 Math 对象的原始值 |
示例:
console.log(Math.abs(-3.1415)); // 输出:3.1415
console.log(Math.acos(0.5)); // 输出:1.0471975511965979
console.log(Math.ceil(1.45)); // 输出:2
console.log(Math.exp(1)); // 输出:2.718281828459045
console.log(Math.floor(5.99)); // 输出:5
console.log(Math.log(6)); // 输出:1.791759469228055
console.log(Math.max(4, 8, 1, 9)); // 输出:9
console.log(Math.min(4, 8, 1, 9)); // 输出:1
console.log(Math.random()); // 输出:0.9172594288928195
console.log(Math.pow(2, 3)); // 输出:8
console.log(Math.sign(-123)); // 输出:-1
console.log(Math.sqrt(125)); // 输出:11.180339887498949

RegExp Object(正则表达式)
JavaScript 字符串是在编程中使用最多的一种数据类型,很多地方都需要对字符串进行操作,例如判断一个字符串是否为一个合法的 E-mail 地址、从字符串截取指定的部分等。
正则表达式是一种用于匹配字符串或特殊字符的一种逻辑公式,所谓逻辑公式就是由一些特定字符组合成的,用来表示某些规则的特殊字符串,可以表达对字符串数据的过滤逻辑。
在 JavaScript 中需要借助 RegExp 对象来使用正则表达式,要创建 RegExp 对象有两种方法,如下所示:
var patt = new RegExp(pattern, modifiers);
var patt = /pattern/modifiers;
参数说明如下:
- pattern:正则表达式,按照正则表达式的语法定义的正则表达式;
- modifiers:修饰符,用来设置字符串的匹配模式,可选值如下表所示:
| 修饰符 | 描述 |
|---|---|
| i | 执行对大小写不敏感的匹配 |
| g | 执行全局匹配(查找所有的匹配项,而非在找到第一个匹配项后停止) |
| m | 执行多行匹配 |
| s | 允许使用.匹配换行符 |
| u | 使用 Unicode 码的模式进行匹配 |
| y | 执行“粘性”搜索,匹配从目标字符串的当前位置开始 |
注意:== 当使用 new 关键字创建 RegExp 对象时,需要将正则表达式中的特殊字符转义,即在特殊字符前加反斜杠\,例如\w+。==
定义正则表达式
正则表达式由字母、数字、标点以及一些特殊特殊字符组成,例如/abc/、/(\d+).\d*/,可以在正则表达式中使用的特殊字符如下表所示:
| 特殊字符 | 含义 |
|---|---|
| \ | 转义字符,在非特殊字符之前使用反斜杠表示下一个字符是特殊字符,不能按照字面理解,例如\b表示一个字符边界;在特殊字符之前使用反斜杠则表示下一个字符不是特殊字符,应该按照字面理解。例如反斜杠本身,若要在正则表达式中定义一个反斜杠,则需要在反斜杠前再添加一个反斜杠\。 |
| ^ | 匹配字符串的开头,如果设置了修饰符 m,则也可以匹配换行符后紧跟的位置。 例如“/^A/”并不会匹配“an A”中的“A”,但是会匹配“An E”中的“A”。 |
| $ | 匹配字符串的末尾,如果设置了修饰符 m,则也可以匹配换行符之前的位置。 例如“/t$/”并不会匹配“eater”中的“t”,但是会匹配“eat”中的“t”。 |
| * | 匹配前一个表达式 0 次或多次,等价于 {0,}。例如“/bo*/”能够匹配“A ghost boooooed”中的“booooo”和“A bird warbled”中的“b”,但是在“A goat grunted”中不会匹配任何内容。 |
| + | 匹配前面一个表达式 1 次或者多次,等价于 {1,}。例如“/a+/”能够匹配“candy”中的“a”和“caaaaaaandy”中所有的“a”,但是在“cndy”中不会匹配任何内容。 |
| ? | 匹配前面一个表达式 0 次或者 1 次,等价于 {0,1}。例如“/e?le?/”能够匹配“angel”中的“el”,“angle”中的“le”以及“oslo”中的“l”。 |
| . | 匹配除换行符之外的任何单个字符。例如“/.n/”将会匹配“nay, an apple is on the tree”中的“an”和“on”。 |
| (x) | 匹配“x”并记住这一匹配项,这里的括号被称为捕获括号。 |
| (?:x) | 匹配“x”但是不记住匹配项,这里的括号被称为非捕获括号。 |
| x(?=y) | 当“x”后面跟着“y”时,匹配其中的“x”。例如“/Jack(?=Sprat)/”会匹配后面跟着“Sprat”的“Jack”,“/Jack(?=Sprat |
| (?<=y)x | 当“x”前面是“y”时,匹配其中的“x”。例如“/(?<=Jack)Sprat/”会匹配前面未“Sprat”的“Jack”,“/(?<=Jack |
| x(?!y) | 当“x”后面不是“y”时,匹配其中的“x”。 例如“/\d+(?!.)/”会匹配“3.141”中的“141”,而不是“3.141”。 |
| (?<!y)x | 当“x”前面不是“y”时,匹配其中的“x”。 |
| x | y |
| {n} | n 是一个正整数,表示匹配前一个字符 n 次。例如“/a{2}/”不会匹配“candy”中的“a”,但是能够匹配“caandy”中所有的“a”,以及“caaandy”中的前两个“a”。 |
| {n,} | n 是一个正整数,表示匹配前一个字符至少 n 次。例如“/a{2,}/”能够匹配“aa”、“aaaa”或“aaaaa”,但不会匹配“a”。 |
| {n,m} | n 和 m 都是整数,表示匹配前一个字符至少 n 次,最多 m 次,如果 n 或 m 等于 0,则表示忽略这个值。例如“/a{1, 3}/”能够匹配“candy”中的“a”,“caandy”中的前两个“a”,“caaaaaaandy”中的前三个“a”。 |
| [xyz] | 转义序列,匹配 x、y 或 z,您也可以使用破折号-来指定一个字符范围。例如“[abcd]”和“[a-d]”是一样的,它们都能匹配“brisket”中的“b”,“city”中的“c”。 |
| [^xyz] | 反向字符集,匹配除 x、y、z 以外的任何字符,您通用也可以使用破折号-来指定一个字符范围。例如“[abc]”和“[a-c]”是一样的,它们都能匹配“brisket”中的“r”,“chop”中的“h”。 |
| [\b] | 匹配一个退格符,注意:不要和 \b 混淆。 |
| \b | 匹配一个单词的边界,即单词的开始或末尾。例如“/\bm/”能够匹配“moon”中的“m”,但不会匹配“imoon”中的“m”。 |
| \B | 匹配一个非单词边界。例如“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。 |
| \cX | 当 X 是 A 到 Z 之间的字符时,匹配字符串中的一个控制符。例如“/\cM/”能够匹配字符串中的“control-M(U+000D)”。 |
| \d | 匹配一个数字,等价于“[0-9]”。例如“/\d/”或者“/[0-9]/”能够匹配“B2 is the suite number.”中的“2”。 |
| \D | 匹配一个非数字字符,等价于“[^0-9]”。 例如“/\D/”或者“/[^0-9]/”能够匹配“B2 is the suite number.”中的“B”。 |
| \f | 匹配一个换页符 (U+000C)。 |
| \n | 匹配一个换行符 (U+000A)。 |
| \r | 匹配一个回车符 (U+000D)。 |
| \s | 匹配一个空白字符,包括空格、制表符、换页符和换行符,等价于“[ \f\n\r\t\v\u00a0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]”。例如“/\s\w*/”能够匹配“foo bar.”中的“bar”。 |
| \S | 匹配一个非空白字符,等价于“[^\f\n\r\t\v\u00a0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]”。例如“/\S\w*/”能够匹配“foo bar.”中的“foo”。 |
| \t | 匹配一个水平制表符 (U+0009)。 |
| \v | 匹配一个垂直制表符 (U+000B)。 |
| \w | 匹配一个单字字符(字母、数字或者下划线),等价于“[A-Za-z0-9_]”。例如“/\w/”能够匹配“apple,”中的“a”,“$5.28,”中的“5”和“3D.”中的“3”。 |
| \W | 匹配一个非单字字符,等价于“[A-Za-z0-9_]”。例如“/\W/”或者“/[A-Za-z0-9_]/”能够匹配“50%.”中的“%”。 |
| \n | 获取最后的第 n 个匹配的值。比如“/apple(,)\sorange\1/”能够匹配“apple, orange, cherry, peach.”中的“apple, orange,”。 |
| \0 | 匹配 NULL(U+0000)字符,不要在这后面跟其它小数,因为 \0 是一个八进制转义序列。 |
| \xhh | 匹配一个两位十六进制数(\x00-\xFF)表示的字符。 |
| \uhhhh | 匹配一个四位十六进制数表示的 UTF-16 代码单元。 |
| \u{hhhh}或\u{hhhhh} | (仅在设置了修饰符 u 时)匹配一个十六进制数表示的 Unicode 字符。 |
在正则表达式中.、*、?、+、[、]、(、)、{、}、^、$、|、\等字符被赋予了特殊的含义,若要在正则表达式中使用这些字符的原本意思时,需要在这些字符前添加反斜线进行转义,例如若要匹配.,则必须编写为.。
使用正则表达式
JavaScript RegExp 对象中提供了一些列方法来执行正则表达式,如下表所示:
| 方法 | 描述 |
|---|---|
| compile() | 在 1.5 版本中已废弃,编译正则表达式 |
| exec() | 在字符串搜索匹配项,并返回一个数组,若没有匹配项则返回 null |
| test() | 测试字符串是否与正则表达式匹配,匹配则返回 true,不匹配则返回 false |
| toString() | 返回表示指定对象的字符串 |
此外 String 对象中也提供了一些方法来执行正则表达式,如下表所示:
| 方法 | 描述 |
|---|---|
| search() | 在字符串中搜索匹配项,并返回第一个匹配的结果,若没有找到匹配项则返回 -1 |
| match() | 在字符串搜索匹配项,并返回一个数组,若没有匹配项则返回 null |
| matchAll() | 在字符串搜索所有匹配项,并返回一个迭代器(iterator) |
| replace() | 替换字符串中与正则表达式相匹配的部分 |
| split() | 按照正则表达式将字符串拆分为一个字符串数组 |
除了方法外,RegExp 对象中还提供了一些属性,如下所示:
| 属性 | 描述 |
|---|---|
| constructor | 返回一个函数,该函数是一个创建 RegExp 对象的原型 |
| global | 判断是否设置了修饰符 “g” |
| ignoreCase | 判断是否设置了修饰符 “i” |
| lastIndex | 用于规定下次匹配的起始位置 |
| multiline | 判断是否设置了修饰符 “m” |
| source | 返回正则表达式的匹配模式 |
示例:
var str = "Hello World!";
var reg = /[a-g]/g;
console.log(reg.exec(str)); // 输出:e
console.log(reg.test(str)); // 输出:true
console.log(reg.toString()); // 输出:/[a-g]/g
console.log(str.search(reg)); // 输出:1
console.log(str.match(reg)); // 输出:e,d
console.log(str.matchAll(reg)); // 输出:[object RegExp String Iterator]
console.log(str.replace(reg,)); // 输出:H+llo Worl+!
console.log(str.split(reg)); // 输出:H,llo Worl,!
