什么是BOM

  • 浏览器对象模型

  • BOM可以使我们通过JS来操作浏览器

  • 在BOM中为我们提供了一组对象,用来完成对浏览器的操作

  • BOM对象

    • Window

      • 代表的是整个浏览器的窗口,同时window也是网页中的全局对象
    • Navigator

      • 代表的是当前浏览器的信息,通过该对象可以识别不同的浏览器
    • Location

      • 代表浏览器的地址栏信息,通过Location可以获取地址栏信息,或者操作浏览器跳转页面
    • History

      • 代表浏览器的历史记录,可以通过该对象操作浏览器的历史记录

        由于隐私的原因,该对象不能获取到具体的历史记录,只能操作浏览器向前或向后翻页,而且该操作只在当次访问时有效

    • Screen

      • 代表用户的屏幕的相关信息,通过该对象可以获取到用户显示器的相关信息
  • Navigator,Location,History,Screen都是作为window对象的属性保存的

    可以通过window对象来使用,也可以直接使用

Navigator

  • 由于历史原因,Navigator对象的大部分属性都已经不能帮助我们识别浏览器了
  • 一般我们只会使用userAgent来判断浏览器的信息
    • userAgent是一个字符串,这个字符串中包含了用来描述浏览器信息的内容
    • 不同的浏览器会有不同的userAgent

History

  • 可以操作浏览器向前或向后翻页

  • length

    • 属性,可以获取到当次访问链接的数量
  • back()

    • 方法,可以回退到上一个页面,作用和浏览器的回退按钮一样
  • forward()

    • 方法,可以跳转到下一个页面,作用和浏览器的前进按钮一样
  • go()

    • 可以跳转到指定页面

    • 它需要一个整数作为参数

      1:表示向前跳转一个页面 相当于farward()

      2:表示向前跳转两个页面

      -1:表示向后跳转一个页面 相当于back()

      -2:表示向后跳转两个页面

Location

  • 如果直接打印location,则可以获取到当前页面的完整路径

  • 如果直接将location属性修改为一个完整的路径,或相对路径

    则页面会自动跳转到该路径

    并且会生成相应的历史记录

  • assgin()

    • 用来跳转到其他的页面,作用和直接修改location一样
  • reload()

    • 用于重新加载当前页面,作用和刷新一样
    • 如果在方法中,传递一个true作为参数,则会强制清空缓存刷新页面
  • replace()

    • 可以使用一个新的页面替换当前页面,调用完毕也会跳转页面

      不会生成历史记录,不能使用回退按钮回退

定时器

  • JS的程序执行速度是非常非常快的
  • 如果希望一段程序可以每间隔一段时间调用一次,可以使用定时调用

定时调用

setInterval()

  • 定时调用
  • 可以将一个函数每隔一段时间执行一次
  • 参数:
    1. 回调函数,该函数每隔一段时间被调用一次
    2. 每次调用间隔的时间,单位是毫秒
  • 返回值:
    • 返回一个Number类型的数据
    • 这个数字作为定时器的唯一标识

clearInterval()

  • 可以用来关闭一个定时器

  • 方法中需要一个定时器的标识作为参数,这样将关闭定时器对应的定时器

  • 可以接收任意参数

    如果参数是一个有效的定时器标识,则停止对应的定时器

    如果参数不是一个有效的标识,则什么也不做

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
window.onload = function(){
var count = document.getElementById("count");
var num = 1;
var timer = setInterval(function(){
count.innerHTML = num++;
if(num == 11){
clearInterval(timer);
}
},500)
}
</script>
</head>
<body>
<h1 id="count"></h1>
</body>
</html>

上述程序将在页面中输出1到10,每隔半秒输出一次

延时调用

  • 延时调用一个函数不马上执行,而是隔一段时间以后再执行,而且只会执行一次

延时调用和定时调用的区别:

定时调用会执行多次,而延时调用只会执行一次

  • 延时调用与定时调用语法几乎相同,在实际开发中是可以互相代替的

setTimeout()

clearTimeout()

JSON

  • JSON: JS对象表示法

  • JS中的对象只有JS认识,别的语言都不认识

  • JSON就是一个特殊格式的字符串,这个字符串可以被任何语言所识别

    并且可以转换为任意语言中的对象

  • JSON在开发中主要用来数据的交互

  • JSON和JS对象的格式一样,只不过JSON字符串的属性名必须加双引号

    其它和JS语法一致

JSON分类

  • 对象{}
    • var obj = '{"name":"孙悟空","age":18,"gender":"男"}';
  • 数组[]
    • var arr = '[1,2,3,"hello",true]';

JSON中允许的值

  • 字符串
  • 数组
  • 布尔值
  • null
  • 对象(不包括函数)
  • 数组

将JSON字符串转换为JS中的对象

  • 在JS中,为我们提供了一个工具类,就叫JSON

    这个对象可以帮助我们将一个JSON转换为JS对象,也可以将一个JS对象转换为JSON

JSON –> JS对象

  • JSON.parse()

    • 可以将JSON字符串转换为JS对象
    • 它需要一个JSON字符串作为参数,会将字符串转换为JS对象并返回

    var o = JSON.parse(obj);

    var o2 = JSON.parse(arr);

JS对象 –> JSON

  • JSON.stringify()
    • 可以将一个JS对象转换为JSON字符串
    • 它需要一个JS对象作为参数,会将JS对象转换为JSON字符串并返回