JS常用内置对象
JS中的对象总共分为三种:自定义对象,内置对象,浏览器对象.
- 自定义对象和内置对象是JS的基础内容属于ECMAScript。
- 浏览器对象属于JS独有的,以后会在Web API中进行专门讲解,请大家及时关注!
内置对象
什么是内置对象?
- 根据JS API(开发文档说明)(Application Program Interface)讲解的内置对象就是指JS语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或者最基础而且最必要的功能(常用的属性、函数等)
常用的内置对象有哪些?
- Math对象
- Date对象
- Array对象
- String对象
JS中一共内置了17个对象,以上的是我们常用的内置对象.
内置对象的作用
- 内置对象的最大的优点是可以帮助开发者提高开发效率
内置对象的使用
- 学习JS内置对象的使用,可以去查询文档,在学习一个内置对象的时候,只需要根据文档学会其自身内部成员的使用方式即可.
Math对象
-
Math对象的作用是执行常见的算术任务
-
Math对象属性中最常用的属性就是PI,我们一般用Math.PI来调用它.在控制台中输出它的值为3.141592653589793,也就是圆周率。
常用方法
Math | 执行常见算术任务的对象 |
---|---|
Math.abs() | 计算绝对值 |
Math.floor() | 向下取整(整数返回自身,小数返回这个小数的整数部分,负小数返回比整数部分小一的负整数) |
Math.ceil() | 向上取整(整数返回自身,小数返回比小数整数部分大一的整数,负小数直接去掉小数部分) |
Math.random() | 取0-1之间的随机小数 |
Math.round() | 四舍五入 |
Math.pow(x,y) | x的y次幂 |
Math.sqrt() | 开平方 |
Math.max() | 取最大值 |
Math.min() | 取最小值 |
随机一个整数该如何处理:
公式
Math.round(Math.random()*10)
随机一个指定范围内的整数的话:
公式
// 指定一个范围整数取随机整数,并且要求包含这两个整数
function randomNum(min,max){
return Math.floor(Math.random()*(max-min+1)+min);
}
Date对象
-
Date对象是JavaScript的内置对象,使用之前必须先对其进行实例化(调用构造)然后才能使用其属性和方法.
-
Date对象主要是用来处理日期以及时间
实例化Date
获取当前时间必须要实例化
var time = new Date();
获取指定时间的日期对象
var time=new Date("2021,10,1");
语法解释
利用new来声明一个新的的对象实体,使用new操作符的语法如下:
var 实例对象名称 = new 对象名称(参数列表)
常用方法
Date | 操作日期和时间的对象 |
---|---|
Date.getYear() | 返回日期的“年”部分。返回值以1900年为基数,如1999年为99 |
Date.parse() | 返回从1970年1月1日零时整算起的毫秒数(当地时间) |
Date.getFullYear() | 返回Date对象的年份字段 |
Date.getMonth() | 返回月份数(0-11),想要几月的话,需要加一 |
Date.getDay() | 返回一周的第几天(0-6),想要星期几的话,需要加一 |
Date.getDate() | 返回日期的“日”部分,值为1~31 |
Date.getHours() | 返回日期的“小时”部分,值为0~23 |
Date.getMinutes() | 返回日期的“分钟”部分,值为0~59 |
Date.getSeconds() | 返回日期的“秒”部分,值为0~59 |
Date.getTime() | 返回从1970年1月1日00:00到现在的毫秒数(格林尼治时间),也就是时间戳 |
Date.getTimezoneOffset() | 返回此地区的时差(当地时间与GMT格林威治标准时间的地区时差),单位为分钟 |
Date.setYear() | 设定日期的“年”部分 |
Date.setFullYear() | 设定日期的“年”部分 |
Date.setMonth() | 设定日期的“月”部分,值为0~11。其中0表示1月,…,11表示12月 |
Date.setDate() | 设定日期的“日”部分,值为0~31 |
Date.setHours() | 设定日期的“小时”部分,值为0~23 |
Date.setMinutes() | 设定日期的“分钟”部分,值为0~59 |
Date.setSeconds() | 设定日期的“秒”部分,值为0~59 |
Date.setMilliseconds() | 设置毫秒(0-999) |
Date.toDateString() | 返回Date对象日期部分作为字符串 |
Date.toGMTString() | 将Date转换为世界时字符串 |
Date.toString() | 将Date转换为字符串 |
Date.toTimeString() | 返回Date对象日期部分作为字符串 |
Date.UTC() | 将Date规范转换成毫秒数 |
实例
显示当前时间
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>格式化日期</title>
</head>
<body>
<script>
window.onload = function () {
var now = new Date()
var year = now.getFullYear()
var month = now.getMonth()
var date = now.getDate()
var hours = now.getHours()
var min = now.getMinutes()
var sec = now.getSeconds()
var wee = now.getUTCDay()
document.write(year + '-' + (month + 1) + '-' + date + ' ' + hours + ':' + min + ':' + sec + ' ' + '星期' + wee)
}
</script>
</body>
</html>
总结:
-
在方法中get开头的方法一般都是获取某些数据的方法
-
而以set开头的方法一般都是设置某些数据的方法
-
而以to开头的方法一般都是将这些数据的类型转成目标类型的方法
Array数组对象
数组分类
- 一维数组:线型
- 二维数组:面型
- 三维数组:体型
实例
// 创建一维数组
var arr1=[1,2,3,4,5];
console.log(arr1);
// 创建二维数组
var arr2=[[1,2,3],[2,3,4],[1,3,2]];
console.log(arr2);
// 创建三维数组
var arr3=[[[1,2],[2,3],[1,3],[1]],[[2,3],[1,3],[2]]];
console.log(arr3);
检测数组
instanceof运算符
instanceof运算符可以判断一个对象是否是某个构造函数的实例
console.log(arr1 instanceof Array);
-
只有这个变量等号之后是以构造函数的执行方式赋予的这个类型结果为true
-
数组的字面量创建方式默认是执行了一个构造函数
Array.isArray()
Array.isArray()方法用于判断一个对象是否为数组,这个方法是HTML5中提供的方法
console.log(Array.isArray(num));
Array数组对象的属性
- Array.length:数组的长度
常用方法
String对象
基本数据类型
-
为了方便操作基本数据类型,JS提供了三个特殊的类型:String、Number、Boolean
-
基本数据类型称为原始类型或简单数据类型,而将基本数据类型进行再包装则会称为复杂数据类型,这样可以通过复杂数据类型对基本数据类型进行对象化(基本数据类型也拥有属性和方法的概念)
实例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
window.onload = function () {
var a = 5;
var b = new Number(5);
console.log(b);//Number对象
console.log(typeof a); //结果是Number
console.log(typeof b); //结果是Object
console.log(a == b);//true
}
</script>
</body>
</html>
字符串的不可变
-
这里字符串的不可变是指字符串变量声明之后,其值不会发生改变.
-
虽然看上去变量的内容发生了改变,其实质是这个变量指向的地址发生了改变
-
也就是存储这个新内容的空间是一个新的地址空间,而旧的地址空间中的值还是原来的,并没有发生变化.
字符串变量改变数据的过程:
- 当声明一个变量来记录字符串数据,变量的名称指向一个地址,顺着这个地址可以找到一个内存空间,这个空间里面记录的就是数据
- 给变量重新赋值时,如果新的数据和原始数据一样,那么变量名称记录的地址是上一步创建时的地址
- 如果给变量重新赋值其数据和原始数据不一样,那么系统会重新开辟一个空间将新的数据先存储,然后变量名称中存储的空间地址不再是原始地址,而是这个新的空间地址
- 原始空间地址如果再也没有被记录那么就会被系统回收,里面的数据彻底被释放
因此在编程中尽可能的不要进行大量的连接字符串操作
字符串的本质
- 我们可以将字符串看做是一个字符类型的数组,因此其大量的属性和方法以及用法一样
常用方法
String | 操作字符串的对象 |
---|---|
String.charAt(index) | 返回指定索引位置的字符,和使用索引方式获取结果一样 |
String.charCodeAt(index) | 返回指定索引位置的字符的ASCII码 |
String.concat() | 连接两个或多个字符串 |
String.indexOf() | 从前往后找,找到返回内容的索引,找不到返回-1 |
String.lastIndexOf() | 从后往前找,找到返回内容的索引,找不到返回-1 |
String.endsWith() | 从指定的位置开始查找指定的字符串,如果查到返回true否则返回false |
String.includes() | 从指定的位置开始查找指定的字符串,如果查到返回true否则返回false |
String.length | 字符串的长度 |
String.slice(n,m) | 抽取一个子串 |
String.substr(start,count) | 将源字符串进行截取从start索引开始截取count个字符 |
String.substring(start,end) | 将原字符串进行截取从start索引开始到end结束(取不到end) |
String.split(切割形式) | 把一个字符串分割成字符串数组 |
String.toUpperCase() | 转大写字母 |
String.toLowerCase() | 转小写字母 |
String.match() | 使用正则表达式模式对字符串执行查找,并将包含查找结果最为结果返回 |
String.replace() | 替换一个与正则表达式匹配的子串 |
String.search() | 检索字符串中与正则表达式匹配的子串。如果没有找到匹配,则返回 -1 |