JS-API-5-BOM

JS学习笔记10

window对象

  • BOM是浏览器对象模型

  • window对象是一个全局对象,也可以说是JavaScript中的顶级对象
  • 像document、alert()、console.log()这些都是window的属性,基本BOM的属性和方法都是window的
  • 所有通过var定义在全局作用域中的变量、函数都会变成window对象的属性和方法
  • window对象下的属性和方法调用的时候可以省略window

定时器-延时函数

  • js中内置的一个用来让代码延迟执行的函数,叫setTimeout

  • setTimeout(回调函数,时间)
    
    1
    2
    3
    4
    5
    6
    7
    8
    9

    setTimeout 仅仅只执行一次,所以可以理解为就是把一段代码延迟执行, 平时省略window

    间歇函数 setInterval : 每隔一段时间就执行一次, , 平时省略window

    * 清楚延时函数

    ```js
    clearTimeout(timerId)
    > 注意点 > > 1. 延时函数需要等待,所以后面的代码先执行 > 2. 返回值是一个正整数,表示定时器的编号

JS执行机制

123

js的同步和异步

同步任务都在主线程上执行,形成一个==执行栈==

  1. 先执行==执行栈中的同步任务==

  2. 异步任务放到任务队列中

事件循环

event loop

同步任务优先执行,异步任务交给浏览器处理,浏览器处理完后添加到任务队列中,同步任务不断检查任务队列

location

location (地址) 它拆分并保存了 URL 地址的各个组成部分, 它是一个对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<body>
<form>
<input type="text" name="search"> <button>搜索</button>
</form>
<a href="#/music">音乐</a>
<a href="#/download">下载</a>

<button class="reload">刷新页面</button>
<script>
// location 对象
// 1. href属性 (重点) 得到完整地址,赋值则是跳转到新地址
console.log(location.href)
// location.href = 'http://www.itcast.cn'

// 2. search属性 得到 ? 后面的地址
console.log(location.search) // ?search=笔记本

// 3. hash属性 得到 # 后面的地址
console.log(location.hash)

// 4. reload 方法 刷新页面
const btn = document.querySelector('.reload')
btn.addEventListener('click', function () {
// location.reload() // 页面刷新
location.reload(true) // 强制页面刷新 ctrl+f5
})
</script>
</body>
  • 通过userAgent检测浏览器的版本及平台
1
2
3
4
5
6
7
8
9
10
// 检测 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<body>
<button class="back">←后退</button>
<button class="forward">前进→</button>
<script>
// histroy对象

// 1.前进
const forward = document.querySelector('.forward')
forward.addEventListener('click', function () {
// history.forward()
history.go(1)
})
// 2.后退
const back = document.querySelector('.back')
back.addEventListener('click', function () {
// history.back()
history.go(-1)
})
</script>
</body>

本地存储

本地存储:将数据存储在本地浏览器中

localStorage

  • 语法

    存储数据:

    1
    localStorage.setItem(key,value)

    作用: 数据可以长期保留在本地浏览器中,刷新页面和关闭页面,数据也不会丢失

    特性:以键值对的形式存储,并且存储的是字符串, 省略了window

1
2
3
4
5
6
7
8
9
10
11
12
13
<body>
<script>
// 本地存储 - localstorage 存储的是字符串
// 1. 存储
localStorage.setItem('age', 18)

// 2. 获取
console.log(typeof localStorage.getItem('age'))

// 3. 删除
localStorage.removeItem('age')
</script>
</body>

本地存储只能存储字符串数据类型

sessionStorage

特性:

  • 用法跟localStorage基本相同
  • 区别是:当页面浏览器被关闭时,存储在 sessionStorage 的数据会被清除

localStorage 存储复杂数据类型

  • 存储复杂数据类型,无法直接使用

解决:需要将复杂数据类型转换成JSON字符串,再存储到本地

语法:JSON.stringify(obj)

1
localStorage.setItem('obj',JSON.stringify(obj))

JSON对象,属性和值有双引号

  • 取回来的时候,把JSON字符串转换为对象
1
JSON.parse(localStorage.getItem('obj'))

数组方法

数组map 方法

1
2
3
4
5
6
7
8
9
10
11
12
<body>
<script>
const arr = ['red', 'blue', 'pink']
// 1. 数组 map方法 处理数据并且 返回一个数组
const newArr = arr.map(function (ele, index) {
// console.log(ele) // 数组元素
// console.log(index) // 索引号
return ele + '颜色'
})
console.log(newArr)
</script>
</body>

数组join方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<body>
<script>
const arr = ['red', 'blue', 'pink']

// 1. 数组 map方法 处理数据并且 返回一个数组
const newArr = arr.map(function (ele, index) {
// console.log(ele) // 数组元素
// console.log(index) // 索引号
return ele + '颜色'
})
console.log(newArr)

// 2. 数组join方法 把数组转换为字符串
// 小括号为空则逗号分割
console.log(newArr.join()) // red颜色,blue颜色,pink颜色
// 小括号是空字符串,则元素之间没有分隔符
console.log(newArr.join('')) //red颜色blue颜色pink颜色
console.log(newArr.join('|')) //red颜色|blue颜色|pink颜色
</script>
</body>

JS-API-5-BOM
https://wjcbolg.cn/2023/04/29/JS学习笔记10/
作者
JasonWang
发布于
2023年4月29日
许可协议
BY-JW