JavaScript|JavaScript 内置对象
目录
目标
内置对象
查文档
MDN
学习对象中的方法步骤
Math 对象
案例:封装数学对象
Math 概述
Math 绝对值和取整方法
绝对值
取整
随机数方法
案例1:随机点名
案例2:猜数字游戏
Date 对象
Date 概述
Date() 方法的使用
获取当前时间
Date() 构造函数的参数
日期格式化
getFullYear()
输出当前日期和星期
封装一个函数,返回当前时间的时分秒
Date 总的毫秒数(时间戳)
获取日期的总的毫秒形式
案例:倒计时效果
Array 对象
检测是否为数组
添加删除数组元素
添加数组元素
删除数组元素
【JavaScript|JavaScript 内置对象】案例:筛选数组
数组排序
数组索引方法
案例:数组去重
数组转换为字符串
String 对象
基本包装类型
字符串的不可变
根据字符返回位置
案例:返回字符位置
根据位置返回字符(重点)
案例:返回字符位置
字符串操作方法(重点)
替换字符串
字符串转换数组
转换大写
转换小写
目标
- 能够说出什么是内置对象
- 能够根据文档查询指定 API 的使用方法
- 能够使用 Math 对象的常用方法
- 能够使用 Date 对象的常用方法
- 能够使用 Array 对象的常用方法
- 能够使用 String 对象的常用方法
- JavaScript 中的对象分为 3 种:自定义对象、内置对象、浏览器对象
- 自定义对象和内置对象是 JS 基础内容,属于 ECMAScript;浏览器对象属于 JS 独有的,通常指各种 API
- 内置对象指 JS 语言自带的一些对象,这些对象供开发者直接使用,并提供了一些常用的或最基本而必要的功能(属性和方法)
- 内置对象最大的优点:帮助我们更快速、高效地开发
- JavaScript 提供了多个内置对象:Math、Date、Array、String 等
- 学习一个内置对象的使用,只要学会其常用成员的使用即可
- 可以通过查阅文档学习,通过 MDN / W3C 来查询
- Mozilla 开发者网络(MDN)提供了有关开发网络技术(Open Web)的信息
- 包括 HTML、CSS 和万维网及 HTML5 应用的 API
- MDN 网址:http://developer.mozilla.org/zh-CN
- 输入 MDN 网址点击进入,在搜索框中输入要查阅对象的方法名
- 查阅该方法的功能(例如:max())
- 查看该方法参数的意义和类型
- 查看返回值的意义和类型
- 通过 demo 进行测试
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
Math 对象
- 可以通过 MDN 查询 Math 对象常用的属性和方法
案例:封装数学对象 利用对象封装数学对象,里面有 PI 值,最大值,最小值
Math 概述 Math 对象不是构造函数,它具有数学常数和函数的属性和方法
和数学相关的运算(求绝对值、取整、最大值等)可以使用 Math 中的方法
Math 绝对值和取整方法 绝对值
取整
- 向下取整:Math.floor(),返回小于括号中数字的最大整数
- 向上整数:Math.ceil(),返回大于括号中数字的最小整数
- 四舍五入取整:当小数部分为 .5 时,无论该数的正负,遵循向上取整
随机数方法
- Math.random()
- 返回一个 0 到 1 之间的伪随机数
- 返回的是一个浮点数
- 返回的随机小数的取值范围:大于等于 0,小于 1
- 不能提供像密码一样安全的随机数字
- 不能使用它来处理有关安全的事情
- 处理安全事件应该使用 Web Crypto API 来代替,和更精确的 window.crypto.getRandomValues() 方法
案例1:随机点名
案例2:猜数字游戏
Date 对象
- Date 对象是一个构造函数,必须使用 new 来创建日期对象
- Date() 如果没有输入任何参数,则 Date 构造器会根据系统设置的当前时间来创建一个 Date 对象
- Date() 如果提供了至少两个参数,其余的参数均会默认设置为 1(如果没有提供 day 参数)或者 0
- 数字型:2021, 7, 16(输出结果为 2021,8,16)
- 字符串型:'2021-07-16 22:51:20'
- Date 对象和 Math 对象不一样,它是一个构造函数,因此需要使用 new 实例化后才能使用
- Date 实例用来处理日期和时间
Date() 构造函数的参数
- 如果括号内有一个参数,且此参数为时间,就返回参数里面的时间
- 参数常用写法:数字型:2021, 7, 16;字符串型:'2021-07-16 22:51:20'
日期格式化 通过以下方法可以得到日期的指定部分
方法名 | 说明 |
---|---|
getFullYear() | 获取当前日期的年份 |
getMonth() | 获取当前日期的月份(0~11) |
getDate() | 获取当前日期 |
getDay() | 获取当前日期的星期(周日0 到周六 6) |
getHours() | 获取当前日期的小时 |
getMinutes() | 获取当前日期的分钟 |
getSeconds() | 获取当前日期的秒数 |
- 根据本地时间返回指定日期的年份
- 括号内没有参数
输出当前日期和星期
封装一个函数,返回当前时间的时分秒
Date 总的毫秒数(时间戳) 获取日期的总的毫秒形式
- Date 对象是基于 1970 年 1 月 1 日(世界标准时间)起的毫秒数
- 计算时间经常使用总的毫秒数,因为它更精确
案例:倒计时效果
核心算法:
- 输入的时间减去现在的时间就是剩余的时间,即倒计时
- 不是拿时分秒分别相减
- 用时间戳来做。用户输入时间总的毫秒数减去现在时间的总的毫秒数,得到的就是剩余时间的毫秒数
- 将剩余时间总的毫秒数转换为 天、时、分、秒(时间戳转换为时分秒)
- date = parseInt(总秒数 / 60 / 60 / 24);// 计算天数
- hours = parseInt(总秒数 / 60 / 60 % 24); // 计算小时
- minutes = parseInt(总秒数 / 60 % 60); // 计算分钟
- seconds = parseInt(总秒数 % 60); // 计算秒数
Array 对象 创建数组对象的两种方式:
- 字面量方式
- new Array()
- 括号内没有参数,表示创建了一个空数组
- 括号内有一个参数 n,表示创建了一个长度为 n 的数组,里面含有 n 个 empty 元素
- 括号中有至少两个参数时,表示此数组中的元素为括号中的参数
检测是否为数组 检测是否为数组的两种方式:
- instanceof 运算符
- Array.isArray(参数)
- 当检测 Array 实例时, Array.isArray() 优于 instanceof ,因为 Array.isArray() 能检测 iframes
- Array.isArray() 是 H5 新增的方法,IE9 以上才支持
添加删除数组元素
方法名 | 说明 | 返回值 |
---|---|---|
push(参数1, 参数2, ......) | 末尾添加一个或多个元素,注意修改原数组 | 返回新的长度 |
pop() | 删除数组最后一个元素,把数组长度减 1,无参数、修改原数组 | 返回它删除的元素的值 |
unshift(参数1, 参数2, ......) | 数组开头添加一个或多个元素,注意修改原数组 | 返回新的长度 |
shift() | 删除数组的第一个元素,数组长度减 1;无参数、修改原数组 | 返回第一个元素的值 |
添加数组元素的方法:
- push()
- unshift()
- 在数组的末尾添加一个或多个数组元素,push:推
- 参数直接写要添加的数组元素
- 原数组会发生变化,同时数组长度增加
- log(arr.push(参数)) 或 log(arr.unshift(参数)),返回值为添加数组元素完毕后的数组长度
删除数组元素
删除数组元素的方法:
- pop()
- shift()
- 删除数组的第一个元素
- 一次只能删除一个元素
- pop() 没有参数
- 删除元素后原数组发生变化,长度减 1
- log(arr.pop()) 或 log(arr.shift()),返回值为 删除的数组元素
案例:筛选数组
数组排序
方法名 | 说明 | 是否修改原数组 |
---|---|---|
reverse() | 颠倒数组中元素的顺序,无参数 | 修改,返回新数组 |
sort | 对数组中的元素进行排序(冒泡排序) | 修改,返回原数组 |
- 使用 sort() 方法进行排序时,会对排序的数字从首位开始进行排序
- 因此对排序的数字中存在两位及以上数字时,需要对 sort() 方法进行操作添加
- 升序排序 return a - b;
- 降序排序 return b - a;
数组索引方法
方法名 | 说明 | 返回值 |
---|---|---|
indexOf() | 数组中查找给定元素的第一个索引 | 如果存在返回索引号;不存在返回 -1 |
lastIndexOf() | 在数组中给定元素的最后一个索引 |
案例:数组去重
思路:
- 目标:把旧数组里面不重复的元素选取出来放到新数组中,重复的元素只保留一个
- 核心算法:遍历旧数组,将旧数组中的元素与新数组中的元素相匹配
- 如果新数组中没有该元素,则将旧数组中的该元素添加到旧数组中
- 如果新数组中存在该元素,则将该元素舍弃。继续匹配下一元素
- 利用 indexOf(旧数组元素),如果返回 -1,则该元素在新数组中不存在,添加;否则舍弃
- newArr.indexOf(arr[i] === -1)
数组转换为字符串
方法名 | 说明 | 返回值 |
---|---|---|
toString() | 数组转换为字符串,逗号分隔每一项 | 返回一个字符串 |
join('分隔符') | 用于把数组中的所有元素转换为一个字符串 |
方法名 | 说明 | 返回值 |
---|---|---|
concat() | 连接两个数组,不影响原数组 | 返回连接产生的新数组 |
slice() | 数组截取 slice(begin, end) | 返回被截取元素组成的数组 |
splice() | 数组删除 splice(begin, deletCount, item1, item2 ...) | 返回被删除元素组成的数组;将影响原数组 |
- var newArr = old_arr.concat(value1, value2, ...)
- value 可以是某个数组,也可以是值
- 将返回连接产生的新数组 newArr
- array.slice(start, end)
- 包括 begin 不包括 end
- begin,end 为正,从数组索引号为 0 开始截取或结束截取;为负,从数组索引号为 array.length - 1 开始截取或结束截取
- 返回被截取元素组成的数组
- 不会影响原数组
- array.splice(startIndex, deleteCount, item1, item2, ...)
- 参数 start: 正数,从 0 开始,索引号为 0 的数组元素为 0;负数,从 -1 开始,数组末尾为 -1
- deleteCount() 被省略,或 值 大于 array.length - start,则 start 之后的元素都将被删除
- 如果值为 0 或 负数,不移除元素;且至少添加一个元素
- item 值可选
- 添加进数组的元素,从 start 位置开始; 若不指定,则只删除元素
- 返回值:由被删除的元素组成的一个数组
String 对象 基本包装类型 为了方便操作基本数据类型,JavaScript 提供了三种特殊的引用类型:String、Number 和 Boolean
基本包装类型:把简单数据类型包装成为复杂数据类型,这样基本数据类型就有了属性和方法
字符串的不可变 指的是里面的值不可变,虽然看上去可以改变的内容,但其实是地址发生了改变,内存中新开辟了一个内存空间用于存放改变后的地址
- 当给一个已经被赋值的字符串重新赋值时,原有的值并不会修改,引燃存在内存中
- 此时将重新在内存中开辟一个新的空间用于存放新的赋值
- 这被称为字符串的不可变
- 因为字符串的不可变,在大量拼接字符串时会存在效率问题
根据字符返回位置
- 字符串的所有方法,都不会修改字符串本身(字符串是不可变的),操作完成后会返回一个新的字符串
方法名 | 说明 |
---|---|
indexOf('要查找的字符', 开始的位置) | 返回指定内容在原字符串中的位置,如果找不到就返回 -1,开始的位置是 index 的索引号 |
lastIndexOf() | 从后往前找,只找第一个匹配的 |
案例:返回字符位置
查找字符串中某字符出现的所有位置及次数
根据位置返回字符(重点)
方法名 | 说明 | 使用 |
---|---|---|
charAt(index) | 返回指定位置的字符 | str.charAt(0) |
charCodeAt(index) | 获取指定位置字符的 ASCII 码 | str.chatCodeAt(0) |
str[index] | 获取指定位置的字符 | H5,IE8支持,和charAt()等效 |
案例:返回字符位置
判断一个字符串中出现次数最多的字符,并统计其次数
字符串操作方法(重点)
方法名 | 说明 |
---|---|
concat(str1, str2, ...) | 该方法用于连接两个或多个字符串。即拼接字符串,等效于 + ,+ 更常用 |
substr(start, length) | 从 start 位置开始(索引号),length 截取的个数(重点) |
slice(start, end) | 从 start 位置开始,截取到 end 位置 |
substring(string, end) | 从 start 位置开始,截取到 end 位置。不接收负值 |
- var newStr = old_str.concat(value1, value2, ...)
- value 可以是某个数组,也可以是值
- 将返回连接产生的新字符串
- var newStr = old_str.substr('截取起始索引号', '截取字符个数')
- 截取起始索引号为负数时,表示该索引号为截取字符的结束索引号(不包括该索引好的字符)
- 截取其实索引号为正数时,表示从该索引号开始截取 '截取字符个数' 的字符
替换字符串
- replace('被替换的字符', '替换的字符')
字符串转换数组
- split('分隔符')
- 方法中的分隔符必须与字符串中的分隔符相一致,且都为英文分隔符
转换大写
- toUpperCase()
转换小写
- toLowerCase()
推荐阅读
- javascript|JS内置对象(各种案例)
- JS学习之内置对象--math对象
- 前端|JavaScript内置对象
- javascript内置对象之一Math
- js学习笔记|JavaScript内置对象 之 Math对象
- Javascript内置对象之-Math()
- JavaScript|JavaScript内置对象及案例
- javascript|JavaScript内置对象-String对象/Number对象/Math对象/Date对象/案例-制作年历-(案例结合版)
- JS知识|JavaScript内置对象(二)(String字符串)
- 总结|JavaScript内置对象总结