目录
navigator对象:是window上的属性,该对象上记录了浏览器自身的相关信息
- // navigator.userAgent:浏览器版本
-
- // 检测 userAgent(浏览器信息)
- !(function () {
- const userAgent = navigator.userAgent
- // 验证是否为Android或iPhone
- const android = userAgent.match(/(Android);?[\s\/]+([\d.]+)?/)
- const iphone = userAgent.match(/(iPhone\sOS)\s([\d_]+)/)
- // 如果是Android或iPhone,则跳转至移动站点
- if (android || iphone) {
- location.href = 'http://m.itcast.cn'
- }
- })()
history对象: 是window上的属性,表示页面的历史,可以通过history对象的属性完成:前进、后退等效果。
功能:
- // 页面前进
- history.forward()
- // 页面后退
- history.back()
-
- // ------------------------------------------
- history.go(1)// 前进一页,相当于:history.forward()
- history.go(0)// 刷新当前页,相当于:location.reload()
- history.go(-1)// 后退一页,相当于:history.back()
随着互联网的快速发展,基于网页的应用越来越普遍,同时也变的越来越复杂,为了满足各种各样的需求,会经常性在本地存储大量的数据,HTML5规范提出了相关解决方案。
数据存储在用户浏览器中
设置、读取方便、甚至页面刷新不丢失数据
容量较大,sessionStorage和localStorage约 5M 左右
生命周期永久生效,除非手动删除,否则关闭页面也会保留
同一浏览器的多页面之间可以共享
以键值对的形式储存使用
储存数据:localStorage.setItem(key,value)
获取数据:localStorage.getItem(key)
删除数据:localStorage.removeItem(key)
场景: 基本数据类型可以直接储存到localStorage中,但是复杂数据类型无法直接储存,需要把复杂数据类型先转换成JSON字符串,在把JSON字符串(就是个字符串)储存到localStorage中
把复杂数据类型转换成JSON字符串:JSON.stringify(复杂数据类型)
储存数据时,使用本方法
把JSON字符串转换回复杂数据类型:JSON.parse(JSON字符串)
去除数据时,使用本方法
生命周期为关闭浏览器窗口
在同一个页面下数据可以共享
以键值对的形式存储使用
用法跟localStorage 基本相同
正则表达式: 是用于匹配字符串中字符组合的模式。在JavaScript中,正则表达式也是对象
使用场景: 正则通常用于匹配、替换、提取那些符合正则表达式的文本,许多语言都支持正则表达式
表单校验中的校验规则功能
过滤敏感词的替换功能
字符串中提取我们想要的部分
正则的使用步骤一样,分两步:
定义规则:写正则
查找:利用正则表表达式查找文本,找到则返回结果
let 变量名 = /表达式/
其中 / / 是正则表达式的字面量
比如:let reg = /小明/
test(): 用来查看字符串是否符合正则规则
是符合,返回true
不符合,返回false
语法:reg.test(被检测的字符串)
比如:
- let str = '小明今天吃了一个包子'
- let reg = /小明/
- let result = reg.test(str)
- console.log(result) // true
exec(): 在字符串中搜索匹配的字符串部分
语法:reg.exec(被检测字符串)
如果匹配成功,则返回一个数组
如果匹配失败,则返回一个null
比如:
- let str = '小明今天吃了一个包子'
- let reg = /小明/
- let result = reg.exec(str)
- console.log(result) // 返回的是一个数组
正则表达式的组成:
普通字符:没有特殊含义,只能匹配和自己相同的字符,如:/a/
元字符:有特殊含义,可以匹配更多规则,如:/[a-z]/
参考文档:
正则测试工具:在线正则表达式测试
元字符分类:
边界符: 表示位置,开头和结尾,必须用什么开头,用什么结尾
量词: 表示重复次数
字符类:特定的字符表示特定的匹配规则
表示位置,开头和结尾,必须用什么开头,用什么结尾
正则表达式中的边界符(位置符)用来 提示字符所处的位置,主要有两个字符
| 边界符 | 说明 |
| ^ | 标示匹配首行文本(以谁开始) |
| $ | 标示匹配行位文本(以谁结束) |
注意点: 如果 ^ 和 $ 在一起,表示必须是精准匹配
表示重复次数
量词用来 设定某个模式出现的次数
| 量词 | 说明 |
| * | 次数 >= 0 次 |
| + | 次数 >= 1 次 |
| ? | 次数 0次 或者 1次 |
| {n} | 次数 == 1 次 |
| {n,} | 次数 >= n 次 |
| {n,m} | n <= 次数 <= m |
特定的字符表示特定的匹配规则
[xxx] 只要字符串中有[]其中任何一个字符,就匹配成功
[] 里面有中划线 - ,表示一个范围 只要字符串的其中一个符合范围,就配合成功
[] 里面有一个^表示取反 只有字符串中有一个符合范围,就匹配成功
. 匹配除换行符以外的任何单个字符
常用正则网址 :https://www.baidufe.com/fehelper/regexp/index.html
修饰符约束正则执行的某些细节行为,如:是否区分大小写,是支持多行匹配等
语法:/表达式/修饰符
i 是单词 ignore 的缩写,正则匹配时字母不区分大小写
- console.log(/a/i.test('a'))
- console.log(/a/i.test('A'))
g 是单词 global 的缩写,匹配所有满足正则表达式的结果
替换字符串中的字符:str.replace(正则表达式,'需要被替换的文本')
标签上属性可以大致分成两类:
固有属性:标签上本来就有的属性:如:title、id、class......
自定义属性:标签上本来没有的属性,自己随意添加的属性
需求:通过js获取标签上的属性
如果要获取html标签上的固有属性(本来就有的属性:title、id、class),可以直接通过dom对象点语法获取和设置
但是如果要获取html标签上的自定义属性(本来没有的属性,自己随意添加的),使用点语法就不行了,需要通过特殊的方法获取和设置
注意点:标签的自定义属性在DOM对象中是不存在的,DOM对象中只会储存固有属性
attribute系列方法是通用的操作标签属性的方法,不管是固有属性还是自定义属性都可以操作
- // 获取标签的属性
- box.getAttribute('属性名');
- // 设置标签的属性
- box.setAttribute('属性名', '属性值');
- // 移除标签的属性
- box.removeAttribute('属性名');
注意点:attribute方法可以操作标签的自定义属性和固有属性
data-自定义属性:传统的自定义属性没有专门的定义规则,开发者随意命名,不够规范,所以在html5中推出来了专门的 data-自定义属性,在标签上一律以data-开头
注意点: 在DOM对象上的data-自定义属性,一律以dataset对象方式获得