• JS学习之BOM2


    期末去死小组作业都去死,为什么不能单人视频为什么?

    停止setInterval()定时器

    window.clearInterval(intervalID);

    clearInterval() 方法取消了先前通过调用setInterval() 建立的定时器

    注意:

    1. window可以省略

    2. 里面的参数就是定时器的标识符

    案例:发送短信

    点击按钮后,该按钮60秒之内不能再次点击,防止重复发送短信

     

    1. 按钮点击之后,会禁用disable为true

    2. 同时按钮里面的内容会变化,注意button里面的内容通过innerHTML修改

    3. 里面秒数是有变化的,因此需要用到定时器

    4. 定义一个变量,在定时器里面不断递减

    5. 如果变量为0 说明到了时间,吸引停止定时器,并且复原按钮初始状态

     

    this

    this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,一般情况下this的最终指向的是哪个调用它的对象

    1. 全局作用域或者普通函数this指向全局对象window(注意定时器里面的this指向window)

     而当定时器this调用时,指向的是window

    JS执行队列

    JS是单线程

    JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。这是因为Javascript这门脚本语言诞生的使命所致-JavaScript是为处理页面中用户的交互,以及操作DOM而诞生的。比如我们对某个DOM元素进行添加和删除操作,不能同时进行。应该先进行添加,之后再删除。

    单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。这样所导致的问题是:如果 JS 执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的感觉。

    一个问题

    以下代码执行的结果是什么?

    1. console.log(1);
    2. setTimeout(function () {
    3. console.log(3);
    4. ​ }, 1000);
    5. console.log(2);

    123

    同步和异步

    为了解决问题,利用多核cpu的计算能力。HTML5提出Web Workert 标准,允许JS脚本创建多个线程,与JS中出现了同步和异步

    同步

    前一个任务结束后再执行后一个任务,程序的执行顺序与任务的排列顺序是一致的,同步的。比如做饭的同步做法:烧水煮饭,等水开了(10分钟之后)再去切菜,炒菜

    异步

    在做一件事情时,这件事会话费很长时间,在做这件事的同时,还可以去处理其他事情,比如做饭的异步做法,在烧水的同时,利用10分钟,去切菜,炒菜

    本质的区别:这条流水线上各个流程的执行顺序不同

    以下代码执行的结果又是什么?

    1. console.log(1);
    2. setTimeout(function () {
    3. console.log(3);
    4. ​ }, 0);
    5. console.log(2);

    123

    同步任务

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

    异步任务

    JS的异步是通过回调函数实现的

    一般而言,异步任务有以下三种类型:

    1. 普通事件,如click resize等

    2. 资源加载, load error

    3. 定时器 包括setInterval setTimeout 等

    异步任务相关回调函数添加到任务队列中(任务队列也称为消息队列)

    JS执行机制

    1. 先执行执行线中的同步任务

    2. 异步任务(回调函数)放入任务队列中

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

    口述:先执行同步任务,再将回调函数放入任务队列中再执行异步任务

    1. console.log(1);
    2. document.onclick = function()  {
    3. ​    console.log('click');
    4. }
    5. console.log(2);
    6. setTimeout(function() {
    7.    console.log(3)
    8. }, 3000);

    123click

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

    Location 对象

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

    URL

    统一资源定位符(UniformResource LocatorURL)是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理。

    URL的一般语法格式为:

    prostocol://host[:port]/path/[?query]#fragment

    http://www.itcast.cn/index.html?name=andy&age=18#link

     

    location对象的属性

     重点记住:href search

    案例:5秒之后自动跳转页面

    • 利用定时器做倒计时效果

    • 事件到了,就跳转页面,使用location.href

     

    案例:获取URL参数数据

    主要练习数据在不同页面中的传递

    口述:一个页面填入的信息 可以呈现再另一个页面中

    分析:

    1. 第一个登录页面,里面有提交表单,action提交到 index.html页面

    2. 第二个页面,可以使用第一个页面的参数,这样实现了一个数据不同页面之间的传递效果

    3. 第二个页面之所以可以使用第一个页面的数据,是利用了URL里面的location.search参数

    4. 在第二个页面中,需要把这个参数提取

    第一步去掉 ? 利用substr

    第二步 利用=号分割 键 和 值 split('=')

     效果如下

     

     

    location对象的方法

    location对象方法返回值
    location.assign()跟href一样,可以跳转页面(也称为重定向页面)
    location.replace()替换当前页面,因为不记录历史,所以不能后退页面
    location.reload()

    重新加载页面,相当于刷新按钮或者 f5 如果参数为true强制刷新ctrl+f5

     

  • 相关阅读:
    SpringCloud 配置管理:Nacos
    为什么 ArrayList的 初始容量为10?每次扩容1.5倍?
    Autoformer
    element表格头部加入图标
    electron实现静默打印(各种踩坑解决)
    DO280OpenShift访问控制--加密和ConfigMap
    Java最新面试宝典 Spring面试题
    【第十三章 FilerReader读入数据,FileWrite写出数据,使用FilerReader和FileWrite实现文件文本复制】
    2019年[海淀区赛 第2题] 阶乘
    linux文件目录管理
  • 原文地址:https://blog.csdn.net/weixin_53317758/article/details/124994297