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_VALUEJavaScript 中所能表示的最大值
Number.MIN_VALUEJavaScript 中所能表示的最小值
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回车
"双引号\ttab
\反斜线本身\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”。
xy
{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,!

在这里插入图片描述