新手小白的JS之路---对象&BOM

29 阅读1分钟

1.保留小数

-   数字. toFixed(保留几位)
var num = 123.45678
var num1 = num.toFixed(2)
console.log(num1);

案例

    // 统计出现次数
    // 0 10
    function fn(min, max) {
        // var num = Math.random()
        // num *= 10
        // num = Math.floor(num)
        // return num
        return parseInt(Math.random() * (max - min + 1)) + min
    }
    console.log(fn(0, 10));

    var obj = {}
    // 随机1000次
    for (var i = 1; i <= 1000; i++) {
        var num = fn(0, 10)
        obj[num] = obj[num] ? obj[num] + 1 : 1
        // if (obj[num] === undefined) {
        //     obj[num] = 1
        // } else {
        //     obj[num] += 1
        // }
    }
    console.log(obj);

2.Math对象/数字方法

- Math

- Math.random()

求一个随机数字(数字范围为0~1)

- Math.round()

取整--四舍五入

- Math.floor()

向下取整 = parseInt

- Math.ceil()

向上取整

- Mah.abs()

绝对值

- Math.max()

  • 最大值
  • 需要传递多个数字来判断最大的值,不能直接传递数组

- Math.min()

  • 最小值
  • 需要传递多个数字来判断最大的值,不能直接传递数组 联系:接收数组 ... [数据1,数据2,数据3……]

3.时间对象

var date = new Date()

  • 不传参的时候,时间对象的内容就是当前时间
  • 时间对象中,月份范围是0-11(不能只写一个数字)

(1)时间对象的获取操作

  • 年:date.getFullYear()

  • 月:date.getMonth()

  • 日:date.getDate()

  • 周:date.getDay()

  • 时:date.getHours()

  • 分:date.getMinutes()

  • 秒:date.getSeconds()

  • 获取当前时间距离1970.1.1.0:0:0 过去的总毫秒数:date.getTime()

(2)时间对象的设置操作

  • 年:date.setFullYear()
  • 月:date.setMonth()
  • 日:date.setDate()
  • 时:date.setHours()
  • 分:date.setMinutes()
  • 秒:date.setSeconds()

(3)定时器

1)setInterval

  • 语法:setInterval(函数,数字)
  • 函数:每次定时器重新执行的时候,要做的事情(要执行的代码)
  • 数字:当前定时器每隔多长时间重新执行一次,单位是毫秒

2)setTimeout

  • 语法:setTimeout(函数,数字)

  • 函数:倒计时器执行的时候,要做的事情(要执行的代码)

  • 数字:当前倒计时器延迟多长时间重新执行一次(只会执行一次),单位是毫秒

  • 定时器的返回值

  • 意义:表明当前定时器是这个页面的第几个定时器

  • 作用:能利用返回值关闭这个定时器

  • 注意:如果页面的打开方式是利用livesever,那么定时器的Id,会不太一样

3)关闭计时器

  • clearInterval(要关闭的定时器的返回值)
  • clearTimeout(要关闭的倒计时器的返回值)
  • 注意:关闭语法可以混用,但是推荐对应的书写,可以明确看出关闭的是定时器还是倒计时器

4.JS的任务

(1)异步任务

  • 特点:单线程,同一时间只能做一件事 如果只有单线程那么可能遇到一些问题
  • 问题:如果遇到一个中间的代码耗时很久, 那么后续的所有代码, 都需要等待上边的代码执行完毕后再执行,给种情况给用户的感觉就是非常卡顿
  • 两个定时器是异步任务

(2)同步任务

  • 目前所接触到的内容中, 除了两个定时器之外的都是同步任务
  • 执行顺序
    • 1.代码从上往下执行
    • 2.先将代码中所有的同步任务, 全都执行一遍
    • 3.同步任务执行完毕后, 在执行异步任务
    • 4.如果在代码的中间遇到了异步任务, 那么先将异步任务暂存到一个任务队列中, 等待所有的同步任务执行完毕后执行

3.BOM

  • 核心:window对象
  • 语法:window . ×××
  • 我们所有的全局变量(函数以外的地方声明变量) 和 全局函数(函数以外的地方声明的函数),全都存放在 window 对象中
  • 我们在开发的时候, 尽量避免全局变量或者全局函数的名字叫做name

(1)获取浏览器的窗口尺寸(宽高)

  • console.log(´浏览器当前宽度´,window.innerWidth)
  • console.log(´浏览器当前高度´,window.innerHeigh)
  • 注意:当前方法包含浏览器的滚动条

(2)打开浏览器提供的弹出框

1)prompt---用户输入框

  • 会有一个返回值,就是用户输入的内容,永远是字符串格式

2)alert---弹出框

3)confrim---用户询问框

  • 会有一个返回值,点击确定返回true,否则返回false
  • 弹出框会中断(暂停)程序的运行,直到关闭弹出框

(3)浏览器的地址信息

  • window.location.href

    • 专门存储浏览器地址栏内url地址的信息
    • 语法:var url = window.location.href
    • 给属性赋值,就会跳转到其地址: window.location.href = 〝#〞
  • window.location.reload()

      -   重新加载页面,相当于刷新
      -   不要写在全局,否则浏览器一直刷新
    

(4)浏览器的历史记录

1)window.history.back( )

  • 用来回退历史纪录的, 就是回到前一个页面

2)window.history.forward( )

  • 是去到下一个历史记录里面, 也就是去到下一个页面

(5)浏览器的版本信息

  • window.navigator

(6)浏览器的事件

1)浏览器延迟加载事件

  • window.onload = function () { }

2)- 浏览器的滚动事件

  • window.onscroll = function () { }

(7)浏览器的滚动距离

  • 竖向

    • document.body.scrollTop
    • doucument.documentElement.scrollTop
  • 注意:滚动事件发生的时候,浏览器的位置一直没变,变化的是浏览器的可视页面

  • 如何区分:

    • 1.谷歌/火狐 如果页面声明那么要使用documentElement,否则使用body
    • 2.IE 如果没有声明那么使用两个都没问题,如果声明了,只能使用documentElement
    • 3.safari 两个都不用,使用一个单独的方法,window.pageYoffset
  • 横向

    • document.body.scrollLeft
    • doucument.documentElement.scrollLeft
    • 注意事项和区分同竖向

(8)本地存储

  • 将一些常用信息存储在用户的电脑本地(存储在浏览器中)

    • localStotrage
  • 增:

    • window.localStorage.setItem(´key´,´value´)
    • 数组无中括号;对象无键值对
    • 两个参数:变量(标识)与值
    • window.localStorage.setItem(JSON.stringify(数组/键值对))
  • 查:

    • window.localStorage.getItem(´key´)
    • JSON.parse(window.localStorage.getItem(标识名))
    • 返回值:查询到返回对应的数据,否则返回null
  • 删:

    • window.localstrage.removeItem(´key´)
    • 清空:window.localstrage.clear()
    • 持久化存储,存储之后不手动删除,那么永远存在
    • 存储的时候,只会存储基本数据类型中的字符串