JavaScript之WebAPIs-BOM

news2024/11/25 10:53:31

目录

  • BOM操作浏览器
    • 一、Window对象
      • 1.1 BOM(浏览器对象模型)
      • 1.2 定时器-延时函数
      • 1.3 js执行机制
      • 1.4 location对象
      • 1.5 navigator对象
      • 1.6 history对象
    • 二、本地存储
    • 三、补充
      • 数组中的map方法
      • 数组中的join方法
      • 数组中的forEach方法(重点)
      • 数组中的filter方法(重点)

BOM操作浏览器

一、Window对象

1.1 BOM(浏览器对象模型)

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

1.2 定时器-延时函数

延时函数与间歇函数不同,只执行一次
语法:setTimeout(回调函数,等待的毫秒数)
清楚延时函数:

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

【注意】:延时器需要等待,后面的代码先执行,每一次调用延时器都会产生一个新的延时器

1.3 js执行机制

JavaScript是单线程的,为了解决这个问题,利用多核CPU的计算能力,出现了同步和异步
同步和异步的本质区别:这条流水线上各个流程的执行顺序不同

  • 同步任务
    同步任务都在主线程上执行,形成一个执行栈
  • 异步任务
    就是的异步任务通过回调函数实现,异步任务相关添加到任务队列中,任务队列也叫消息队列
    异步任务一般有三个类型:① 普通事件(click、resize) ② 资源加载(load、error) ③ 定时器(setInterval、setTimeout)
    执行步骤:① 先执行执行栈中的同步任务 ② 异步任务放到任务队列 ③ 当执行栈中的同步任务执行完毕时,系统或依次读取任务队列中的异步任务
  • 事件循环(event loop):由于主线程不断地重复获取任务、执行任务再获取任务、在执行,这种机制就叫事件循环

1.4 location对象

location的数据类型是对象,它拆分并保存了url地址的各个部分
常用属性和方法:

  1. href属性
    获取完整的url地址,赋值时用于地址的跳转
    // 可以得到当前文件url地址
    console.log(location.href)
    // 可以通过js方式跳转到目标地址
    location.href = 'http://www.itcast.cn'
    
  2. search属性
    获取地址中携带的参数,符号?后面部分
  3. hash属性
    获取地址中携带的参数,符号#后面部分
  4. reload()方法:
    刷新页面,可以传入参数,传入true表示强制刷新

1.5 navigator对象

navigator的数据类型是对象,记录了浏览器自身的相关信息
常用属性和方法:

  1. 通过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 history对象

history的数据类型是对象,管理历史记录: 前进、后退、历史记录
常见属性和方法:

  • back() 后退功能
  • forward() 前进功能
  • go(参数) 前进后退,参数如果是1就前进一个页面如果是-1就后退一个页面

二、本地存储

  • 数据存储在用户浏览器
  • 设置、读取方便、甚至页面刷新不丢失数据
  • 容量较大,sessionStorage和localStorage约5M左右
  • 常见使用场景:页面刷新数据不丢失
    1. localStorage
      作用:可以把数据永久的存储在本地(用户的电脑),除非手动删除,否则关闭页面也会存在
      特性:① 可以多窗口共享 ② 以键值对形式存储使用
      语法:
      • 存储(有就是存储,没有就是修改) localStorage.setItem(key,value)
      • 获取 localStorage.getItem(key)
      • 删除 localStorage.removeItem(key)
        【注意】:本地存储只能存储字符串类型
    2. sessionStorage
      关闭浏览器时数据消失
      特性:① 生命周期为关闭浏览器窗口 ② 在同一个窗口下数据可以共享 ③ 以键值对的形式存储使用 ④ 用法与localStorage基本相同
  • 存储复杂数据类型
    解决本地存储只能存储字符串类型数据的问题
    把对象转换为JSON字符串:JSON.stringify(obj)
    把JSON字符串转换为对象:JSON.parse(localStorage.getItem('obj'))
    JSON对象:属性和值都有引号,且引号都用双引号

三、补充

数组中的map方法

遍历数组处理数据,并且返回新的数组
map也叫映射,有返回值,forEach没有
语法:

数组名.map(function (数组元素,元素索引) {
    
})

数组中的join方法

用于把数组中的所有元素转换成一个字符串
转换后的数组元素通过参数里指定的分隔符进行分割,若为空字符串(‘’),则所有元素之间没有任何字符,参数为空则用逗号分隔
语法:

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

数组中的forEach方法(重点)

遍历数组中的每个元素,无返回值,适合遍历数组对象
语法:

数组名.forEach(function (数组元素,元素索引) {
    
})

数组中的filter方法(重点)

筛选数组符合条件的元素,并返回筛选之后元素的新数组不改变原数组,只能写比较运算符
语法: currentValue必须写,index可选

数组名.filter(function (currentValue, index) {
    return 筛选条件
})

eg:在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1941506.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux_线程的同步与互斥

目录 1、互斥相关概念 2、代码体现互斥重要性 3、互斥锁 3.1 初始化锁 3.2 申请、释放锁 3.3 加锁的思想 3.4 实现加锁 3.5 锁的原子性 4、线程安全 4.1 可重入函数 4.2 死锁 5、线程同步 5.1 条件变量初始化 5.2 条件变量等待队列 5.3 唤醒等待队列…

探索 Java 中的 DeferredResult<Object>

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

(POSIX) 文件读写基础

文章目录 🗂️前言📄ref📄访问标记🗃️文件访问标记 🗂️Code📄demo📄分点讲解🗃️打开/关闭🗃️写🗃️读 🗂️END🌟关注我 &#x1f…

C++ 正则库与HTTP请求

正则表达式的概念和语法 用于描述和匹配字符串的工具,通过特定的语法规则,灵活的定义复杂字符串匹配条件 常用语法总结 基本字符匹配 a:匹配字符aabc:匹配字符串abc 元字符(特殊含义的字符) .:匹…

【医学影像】RK3588+FPGA:满足远程诊疗系统8K音视频编解码及高效传输需求

医学影像 提供基于Intel平台、NXP平台、Rockchip平台的核心板、Mini-ITX主板、PICO-ITX主板以及工业整机等计算机硬件。产品板载内存,集成超高清编码/解码视频引擎,具有出色的数据处理能力和图形处理能力,功能高集成,可应用于超声…

可信推荐系统论文分享-1

《Debiasing Recommendation by Learning Identifiable Latent Confounders》

openmv学习笔记(24电赛备赛笔记)

#openmv简介 openmv一种小型,可编程机器视觉摄像头,设计应用嵌入式应用和计算边缘,是图传模块,或者认为是一种,具有图像处理功能的单片机,提供多种接口(I2C SPI UART CAN ADC DAC &#xff0…

【BUG】已解决:Uncaught SyntaxError: Unexpected token ‘<‘

已解决:Could not install packages due to an EnvironmentError: [Errno 13] Permission denied 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识,武汉城市开发者社区主理人 …

如何训练出模型的推理规划能力

背景 近期opanai对AGI做了等级划分;等级划分意味着AGI有了一个考核定义,有了升级打怪的评价指标。并给出了目前openai正处在第一级,即将达到第二级的论断。预计在一年或者一年半内实现第二级,可以完成基本问题解决任务的系统。 …

抖音客户端一面

C | 字节抖音客户端一面 Http握手过程 1. 客户端问候(Client Hello) 客户端向服务器发送一个“问候”消息,其中包含客户端支持的SSL/TLS版本、加密算法、压缩方法以及一个随机数。 version 版本号,https也有版本号哦TLS 1.0、TLS 1.1、TLS 1.2等等 random 随机数…

【Linux】进程信号 --- 信号保存

👦个人主页:Weraphael ✍🏻作者简介:目前正在学习c和算法 ✈️专栏:Linux 🐋 希望大家多多支持,咱一起进步!😁 如果文章有啥瑕疵,希望大佬指点一二 如果文章对…

Linux中进程间通信--匿名管道和命名管道

本篇将会进入 Linux 进程中进程间通信,本篇简要的介绍了 Linux 中进程为什么需要通信,进程间通信的常用方式。然后详细的介绍了 Linux 进程间的管道通信方式,管道通信分为匿名管道和命名管道,本篇分别介绍了其实现的原理&#xff…

4.Java Web开发模式(javaBean+servlet+MVC)

Java Web开发模式 一、Java Web开发模式 1.javaBean简介 JavaBeans是Java中一种特殊的类,可以将多个对象封装到一个对象(bean)中。特点是可序列化,提供无参构造器,提供getter方法和setter方法访问对象的属性。名称中…

顺序 IO 和 随机IO

顺序 IO 和 随机IO 顺序IO 和 随机IO 是计算机存储系统领域中的概念,主要涉及数据的读取和写入方式。这些术语通常在讨论硬盘驱动器(HDDs)、固态驱动器(SSD)以及其他存储设备的性能时使用。 顺序IO(Sequen…

TeamViewer关闭访问密码或固定一组密码不变

TeamViewer的新UI界面变化较大,网上的一些信息已经不再有效,更新后的访问密码在如下图所示: 演示的版本为7.21.4—— 设置每次你的设备访问的密码

Hi6274 反激式20瓦电源芯片

HI6274为高性能多模式 PWM 反激式20瓦电源芯片。HI6274较少的外围元器件、较低的系统成本可设计出高性能的"无Y"开关电源。HI6274提供了极为全面和性能优异的智能化保护功能,包括逐周期过流保护、过载保护、软启动、芯片过温保护、可编程输出过压保护功能…

Kettle 登录示例 POST请求

登录接口是post请求,组装Body为json字符串 var body "{\"username\":\""username"\",\"password\": \""password"\",\"code\":\""verification"\",\"uuid\…

【算法/训练】:前缀和差分

🚀 前言: 前面我们已经通过 【算法/学习】前缀和&&差分-CSDN博客 学习了前缀和&&差分的效相关知识,现在我们开始进行相关题目的练习吧 1. 校门外的树 思路:给[0, n]的数组都标记为1,然后输出m行范围…

初学Mybatis之配置解析

MyBatis 中文网配置教程 mybatis-config.xml 环境配置(environments) 尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境 可以有多个 enviroment,但是 enviroments default(默认)只…

Linux:Linux发展史

大家好!此篇文章并非技术博文,而是简单了解Linux的时代背景和发展史,只有知其所以然才能让我们更好地让走进Liunx的世界! 一、计算机的发展历史背景 首先我们要知道,早期大多数科技的进步都是以国家的对抗为历史背景的…