一、BOM概述
BOM浏览器对象模型,兼容性比较差。
BOM比DOM大,包含DOM。
二、window对象的常见事件
有了窗口加载事件,js任意位置都适应。等到页面全部加载完毕,接着执行。
document.addEventlister(‘DOMContentLoaded’,function() {})
这个用法和窗口加载事件相似只不过,仅当DOM加载完毕,不包括样式表、图片等等、IE9以上才支持。这个在当一个页面图片很多时,方便提高效率。
2.2调整窗口大小事件
window.addEventListener('resize',function() {})
经常利用这个配合响应式布局。window.innerWidth得到当前屏幕的宽度。
三、定时器
- setTimeout()
- setInterval()
<script>
// 1. setTimeout
// 语法规范: window.setTimeout(调用函数, 延时时间);
// 1. 这个window在调用的时候可以省略
// 2. 这个延时时间单位是毫秒 但是可以省略,如果省略默认的是0
// 3. 这个调用函数可以直接写函数 还可以写 函数名 还有一个写法 '函数名()'
// 4. 页面中可能有很多的定时器,我们经常给定时器加标识符 (名字)
// setTimeout(function() {
// console.log('时间到了');
// }, 2000);
function callback() {
console.log('爆炸了');
}
var timer1 = setTimeout(callback, 3000);
var timer2 = setTimeout(callback, 5000);
// setTimeout('callback()', 3000); // 我们不提倡这个写法
</script>
代码:
var hour = document.querySelector('.hour'); // 小时的黑色盒子
var minute = document.querySelector('.minute'); // 分钟的黑色盒子
var second = document.querySelector('.second'); // 秒数的黑色盒子
var inputTime = +new Date('2022-2-21 18:00:00'); // 返回的是用户输入时间总的毫秒数
countDown(); // 我们先调用一次这个函数,防止第一次刷新页面有空白
// 2. 开启定时器
setInterval(countDown, 1000);
function countDown() {
var nowTime = +new Date(); // 返回的是当前时间总的毫秒数
var times = (inputTime - nowTime) / 1000; // times是剩余时间总的秒数
var h = parseInt(times / 60 / 60 % 24); //时
h = h < 10 ? '0' + h : h;
hour.innerHTML = h; // 把剩余的小时给 小时黑色盒子
var m = parseInt(times / 60 % 60); // 分
m = m < 10 ? '0' + m : m;
minute.innerHTML = m;
var s = parseInt(times % 60); // 当前的秒
s = s < 10 ? '0' + s : s;
second.innerHTML = s;
}
this指向问题
this 指向问题 一般情况下this的最终指向的是那个调用它的对象
- 全局作用域或者普通函数中this指向全局对象window( 注意定时器里面的this指向window)
- 方法调用中谁调用this指向谁
var o = {
sayHi: function() {
console.log(this); // this指向的是 o 这个对象
}
}
o.sayHi();- 构造函数中this指向构造函数的实例
四、JS执行机制
4.1js同步和异步
五、location对象、
window 对象给我们提供了一个 location 属性用于获取或设置窗体的 URL,并且可以用于解析 URL 。
因为这个属性返回的是一个对象,所以我们将这个属性也称为 location 对象
5.4location常见方法
六、navigator对象
主要是用于判断用户打开网页的方式。
七、history对象
代码:
btn.addEventListerner('click',function() {
history.forword();
})