当前位置:首页 » 《随便一记》 » 正文

BOOmBOOMBOOm快来看_N奈斯先生的博客

10 人参与  2022年05月07日 08:19  分类 : 《随便一记》  评论

点击全文阅读


   欢迎加入前端技术营!如果你也是前端学习者或者对前端有学习的想法,那就跟着我一起从零开始进击前端。
  致力于尽可能详细且简洁的介绍前端知识、自己的捷径,也是学习路上的记录。欢迎探讨


文章目录

    • 一、BOM简介
      • 🍍BOM构成🍍
      • 🍍JS执行机制🍍
    • 二、 window对象的常见事件
      • 🍍窗口加载事件🍍
      • 🍍调整窗口大小事件🍍
      • 🍍两种定时器🍍
      • 🍍location对象🍍
      • 🍍history对象🍍
    • 三、面试题
      • 一、如何理解高阶函数
      • 二、如何区分声明函数和表达式函数


👀感觉好久不见了,是不是觊觎我的知识很久了👀
在这里插入图片描述
终于要学新知识了,好激动有木有,这回了解一下BOM对象


一、BOM简介

BOM( Browser Object Model )即浏览器对象模型,它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是window。

BOM由一系列相关的对象构成,并且每个对象都提供了很多方法与属性。

上回说了DOM,看看他们有什么区别吧
在这里插入图片描述

🍍BOM构成🍍

在这里插入图片描述
window对象是浏览器的顶级对象,它具有双重角色。

1、它是JS访问浏览器窗口的一个接口。
2、它是一个全局对象。定义在全局作用域中的变量、函数都会变成window对象的属性和方法。
3、在调用的时候可以省略window,前面学习的对话框都属于window对象方法,如alert()、prompt()等。
4、注意: window下的一个特殊属性window.name

🍍JS执行机制🍍

JS是单线程,JavaScript语言的一大特点就是🍢单线程🍢,也就是说,同一个时间只能做一件事。意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。

为了解决这个问题出现了🍢同步和异步🍢:

🍟同步:前一个任务结束后再执行后一个任务,程序的执行顺序与任务的排列顺序是一致的、同步的。

🍟异步:执行一个花费很长时间的任务的同时,还可以去处理其他事情。

JS的异步是通过回调函数实现的。一般而言,异步任务有以下三种类型
1、普通事件,如click、resize等
2、资源加载,如load、error等
3、定时器,包括setInterval、setTimeout等

🍢执行机制🍢
1.先执行执行栈中的同步任务。
2.异步任务(回调函数)放入任务队列中。
3.一旦执行栈中的所有同步任务执行完毕,系统就会按次序读取任务队列中的异步任务,于是被读取的异步任务结束等待状态,进入执行栈,开始执行。
在这里插入图片描述

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


二、 window对象的常见事件

听到对象,来不来劲
在这里插入图片描述

🍍窗口加载事件🍍

window.onload = function () { }

1.有了window.onload就可以把JS代码写到页面元素的上方,因为onload是等页面内容全部加载完毕,再去执行处理函数。
2. window.onload传统注册事件方式只能写一次,如果有多个,会以最后一个window.onload为准。

document.addEventListener(‘DOMContentLoaded’, function () { } )

DOMContentLoaded事件触发时,仅当DOM加载完成,不包括样式表,图片,flash等等。le9以上才支持

如果页面的图片很多的话,从用户访问到onload触发可能需要较长的时间,交互效果就不能实现,必然影响用户的体验,此时用DOMContentLoaded事件比较合适。

🍍调整窗口大小事件🍍

window .onresize是调整窗口大小加载事件,当触发时就调用的处理函数。

1.只要窗口大小发生像素变化,就会触发这个事件。

2.我们经常利用这个事件完成响应式布局。window.innerWidth当前屏幕的宽度

window.onresize = function() {}

🍍两种定时器🍍

🍢 window.setTimeout(调用函数,[延迟的毫秒数]); 🍢
用于设置一个定时器,该定时器在定时器到期后执行调用函数。

setTimeout(function() {
        //     console.log('时间到了');
        // }, 2000);
        function callback() {
            console.log('爆炸了');
        }
        var timer1 = setTimeout(callback, 3000);
        var timer2 = setTimeout(callback, 5000);

window.clearTimeout(timeoutID):停止计时器

<button>点击停止定时器</button>
<script>
        var btn = document.querySelector('button');
        var timer = setTimeout(function() {
            console.log('冲冲冲');
        },3000)
        btn.addEventListener('click',function() {
           clearTimeout(timer);
        })

🍢 window.setInterval(回调函数,[间隔的毫秒数]) 🍢

setInterval()方法重复调用一个函数,每隔这个时间,就去调用一次回调函数。

window.clearInterval(timeoutID):停止计时器

<button class="begin">开启定时器</button>
    <button class="stop">停止定时器</button>
    <script>
        var begin = document.querySelector('.begin');
        var stop = document.querySelector('.stop');
        var timer = null;
        begin.addEventListener('click',function() {
            timer = setInterval(function() {
                 console.log('冲');
            },1000)
        })
        stop.addEventListener('click',function() {
            clearInterval(timer);
        })
    </script>

🍍location对象🍍

window对象给我们提供了一个location属性用于获取或设置窗体的URL,并且可以用于解析URL。因为这个属性返回的是一个对象,所以我们将这个属性也称为location对象。

🍍history对象🍍

window对象给我们提供了一个history对象,与浏览器历史记录进行交互。该对象包含用户(在浏览器窗口中)访问过的URL。

<a href="https://blog.csdn.net/qq_54200067/article/details/121211304?spm=1001.2014.3001.5501">点击查看</a>
    <button>前进</button>
    <script>
        var btn = document.querySelector('button');
        btn.addEventListener('click',function () {
            history.forward();
        })
    </script>

三、面试题

一、如何理解高阶函数

JavaScript中的一切都是对象,包括函数。我们可以将变量作为参数传递给函数,函数也是如此。我们调用接受和或返回另一个函数称为高阶函数的函数。

二、如何区分声明函数和表达式函数

// 声明函数
function hello() {
return "HELLO"
}
// 表达式函数
var h1 = function hello() {
return "HELLO"
}

两个函数将在不同的时期定义。在解析期间定义声明,在运行时定义表达式;因此,如果我们控制台打印 h1,它将显示HELLO。


  • 点赞加关注,持续更新实用技巧、热门资源、软件教程等
  • 有任何 软件 影视 教程资源 考证资料等需求留言即可

点击全文阅读


本文链接:http://m.zhangshiyu.com/post/39623.html

函数  对象  执行  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1