学习笔记——web APIs BOM

目录

1.1BOM

1.2定时器-延时函数

两种定时器对比: 执行的次数

案例:5秒钟之后消失的广告 

 1.3 JS执行机制

同步任务:

异步任务:

执行机制:

1.4 location对象

1.5 navigator 对象

1.6 histroy 对象

2.1本地储存

JSON.stringify(复杂数据类型)

JSON.parse(JSON字符串)

数组中的map方法 迭代数组

数组中的join方法

遗忘复习知识点:

js使用dataset方法自定义属性:

CSS属性选择器 (中括号)



1.1BOM

  • BOM(Browser Object Model) 是浏览器对象模型

  • window对象是一个全局对象,也可以说是JS中的顶级对象

  • 像document, alert(),console.log()这些都是window的属性,基本BOM的属性和方法都是的window的

  • 所有通过VAR定义在全局作用域中的变量、函数都会变成windou对象的属性和方法

  • window对象下的属性和方法调用的时候可以省略window


1.2定时器-延时函数

  • JS 内置的一个用代码块延迟执行的函数,叫setTimeout
  • 语法

setTimeout(回调函数等待的毫秒数)

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

let timer = setTimeout(回调函数,等待的毫秒数) 

clearTimeout(timer)

注意点:

  • 延迟函数需要等待,所以后面的代码先执行
  • 每一次调用延迟器都会产生一个新的延迟器

两种定时器对比: 执行的次数

延迟函数(setTimeout):执行一次

间歇函数(setInterval):每隔一段时间就执行一次,除非手动清除 

案例:5秒钟之后消失的广告 


 1.3 JS执行机制

由于主线程不断的重复获得任务、执行任务、再获取任务、再执行,所以这种机制被称为 事件循环(eventloop)。

       JavaScript 语言的一大特点就是 单线程 ,也就是说, 同一个时间只能做一件事。
这是因为 Javascript 这门脚本语言诞生的使命所致——JavaScript 是为处理页面中用户的交互,以及操作
        DOM 而诞生的。比如我们对某个 DOM 元素进行添加和删除操作,不能同时进行。 应该先进行添加,之后再删除。
        单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。这样所导致的问题是:
        如果 JS 执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的感觉
  • 为了解决这个问题,利用多核 CPU 的计算能力,HTML5 提出 Web Worker 标准,允许 JavaScript 脚本创建多个线程。于是,JS 中出现了 同步 异步。
    同步: 前一个任务结束后再执行后一个任务,程序的执行顺序与任务的排列顺序是一致的、同步的。比如做饭的同步做法:我们要烧水煮饭,等水开了(10分钟之后),再去切菜,炒菜。
    异步 : 你在做一件事情时,因为这件事情会花费很长时间,在做这件事的同时,你还可以去处理其他事情。比如做饭的异步做法,我们在烧水的同时,利用这10分钟,去切菜,炒菜。
    他们的本质区别: 这条流水线上各个流程的执行顺序不同。

同步任务:

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

异步任务:

JS 的异步是通过回调函数实现的。
一般而言,异步任务有以下三种类型:
1、普通事件,如 click、resize 等
2、资源加载,如 load、error 等
3、定时器,包括 setInterval、setTimeout 等
异步任务相关添加到 任务队列 中(任务队列也称为消息队列)。

执行机制:

1. 先执行 执行栈中的同步任务
2 . 异步任务放入任务队列中。
3. 一旦执行栈中的所有同步任务执行完毕,系统就会按次序读取 任务队列 中的异步任务,于是被读取的异步任务结束等待状态,进入执行栈,开始执行


1.4 location对象

location 的数据类型是对象,它拆分并保存了 URL 地址的各个组成部分
常用属性和方法:
// 可以得到当前文件URL地址
console.log(location.href)
// 可以通过JS方式跳转到目标地址
location.href = 'http://www.baidu.com'
Ø href 属性获取完整的 URL 地址,对其赋值时用于地址的跳转
Ø search 属性获取地址中携带的参数,符号 ?后面部分
Ø hash 属性获取地址中的啥希值,符号 # 后面部分
Ø reload 方法用来刷新当前页面,传入参数 true 时表示强制刷新

1.5 navigator 对象

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'
}
})()

1.6 histroy 对象

history 的数据类型是对象,主要管理历史记录, 该对象与浏览器地址栏的操作相对应,如前进、后退、历史记录等

2.1本地储存

目标: 能够使用localStorage 把数据存储的浏览器中
作用: 可以将数据永久存储在本地(用户的电脑), 除非手动删除,否则关闭页面也会存在
特性:
  • 可以多窗口(页面)共享(同一浏览器可以共享)
  • 键值对的形式存储使用
语法:
存储数据:
localStorage.setItem(key, value)
获取数据:
localStorage.getItem(key)
删除数据:
localStorage.removeItem(key)
2.2 本地存储分类- sessionStorage
特性:
生命周期为关闭浏览器窗口
在同一个窗口(页面)下数据可以共享
以键值对的形式存储使用
用法跟 localStorage 基本相同

储存复杂数据类型

本地只能储存字符串,无法储存复杂数据类型

JSON.stringify(复杂数据类型)

会出现[object Object]

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

语法:JSON.sringify(复杂数据类型)

 此时 会出现问题:因为本地储存里面取出来的是字符串,不是对象,无法直接使用

JSON.parse(JSON字符串)

利用map()和join()数组方法实现字符串拼接

数组中的map方法 迭代数组

使用场景:map 可以遍历数组处理数字,并且返回新的数组

const arr = ['red','blue','green']
const newArr = arr.map(function(ele, index))  {     //map里面引用一个回调函数(里面有两个参数)
  console.log(ele)    //数组元素
  console.log(index)  // 数组索引号
  return ele + '颜色'
})
console.log(newArr)   //['red颜色','blue颜色','green颜色']

map 也称为映射。映射是个术语,至两个元素的集之间元素相互“对应”的关系

如图理解,牛肉可以做成汉堡,土豆可以做成薯条,鸡肉可以炸成鸡腿,玉米可以做成爆米花。前面的数组经过处理数据之后,返回一个新的数组 ,两个集合的元素一一对应

map重点在于有返回值,forEach没有返回值

数组中的join方法

作用:join()方法用于把数组中所有的元素转换成一个字符串

语法:

const arr = ['red颜色','blue颜色','green颜色']
console.log(arr.join('')   //red颜色blue颜色green颜色

参数:数组元素使通过参数里面指定的分隔符进行分割的,若是空字符串(''),则所有元素之间都没有任何字符,若是其他分隔符,就用该分隔符分割。

console.log(newArr.join())  //red颜色,blue颜色,pink颜色
    // 小括号为空则默认用逗号分割
    console.log(newArr.join(''))  //red颜色blue颜色pink颜色
    console.log(newArr.join('|'))  //red颜色|blue颜色|pink颜色

遗忘复习知识点:

js使用dataset方法自定义属性:

<div data-id="1" data-spm="不知道">1</div>
  <div data-id="2">2</div>
  <div data-id="3">3</div>
  <div data-id="4">4</div>
  <div data-id="5">5</div>
  <script>
    const one = document.querySelector('div')
    console.log(one.dataset.id)  //1
    console.log(one.dataset.spm)  //不知道
  </script>

data-id 

dataset.id

CSS属性选择器 (中括号)

<body>
<input type="checkbox" name="agree" />   //复选框的选择器 选择表单中name属性值为‘agree’的元素
</body>
<script>
const agree = document.querySelector('[name=agree]')
</script>

  • 32
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设计一个webapis学生报名系统的代码步骤如下: 1. 数据库设计:首先确定需要存储的数据,例如学生的基本信息,课程信息等。根据需求设计数据库表结构,并创建相应的表。 2. 后端接口设计:根据系统需求,设计后端接口,包括学生信息的录入、查询、修改和删除等功能。使用合适的编程语言,如Java、Python等,实现这些接口。 3. 前端界面设计:设计一个用户友好的前端界面,包括学生报名表单和查询功能。使用HTML、CSS、JavaScript等技术实现界面的布局和交互,确保用户能够方便地输入和查询信息。 4. 前后端交互:通过AJAX或其他技术,实现前后端的数据交互。前端向后端发送请求,后端处理请求并返回相应的数据。 5. 学生信息录入:在前端界面设计好的报名表单中,用户输入个人信息,通过调用后端接口将数据传递到后台。后台接收并验证输入的数据,并将学生信息存储到数据库中。 6. 学生信息查询:在前端界面设计好的查询功能中,用户输入需要查询的条件,通过调用后端接口将查询条件传递到后台。后台根据查询条件在数据库中查找匹配的学生信息,并将查询结果返回给前端。 7. 学生信息修改和删除:在前端界面设计好的修改和删除功能中,用户选择需要修改或删除的学生信息,并通过调用后端接口将相应的操作请求传递到后台。后台根据请求进行相应的操作,更新或删除数据库中的对应数据。 8. 错误处理和数据校验:在整个系统设计过程中,需要考虑错误处理和数据校验。在后端接口中,对输入的数据进行合法性检查,确保输入的数据符合要求。在前端界面中,对用户的输入进行格式验证,及时反馈给用户。 9. 安全性保障:为了保障系统的安全性,可以采用身份认证、权限控制等机制,确保只有授权的用户能够进行报名和查询等操作。 10. 测试和部署:在完成系统开发后,进行系统的测试和调试。确保系统的正确性和稳定性。最后将系统部署到服务器上,供用户使用。 以上是一个简单的webapis学生报名系统代码步骤,具体实现还需要根据具体需求进行调整和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值