样例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
</style>
</head>
<body>
<button>点击</button>
<script>
// this 指向问题: 一般情况下this的最终指向的是那个调用它的对象
//1. 全局作用域或者普通函数中this指向全局对象windown(注意定时器里面的this指向windown)
console.log(this);
function fn(){
console.log(this);
}
window.fn();
window.setTimeout(function(){
console.log(this);
},1000)
// 2. 方法调用中谁调用this指向谁
var o = {
sayHi: function(){
console.log(this);
}
}
o.sayHi();
var btn = document.querySelector('button');
btn.onclick = function(){
console.log(this);
}
btn.addEventListener('click',function(){
console.log(this);
})
// 3. 构造函数中this指向构造函数的实例
function Fun(){
console.log(this);
}
var fun = new Fun();
</script>
</body>
</html>
JS早先是单线程,造成了一些堵塞效果;HTML5提出Web Worker标准,允许JavaScript脚本创建多个线程。于是,JS中出现了同步和异步
一般而言,异步任务有以下三种类型:
1. 普通事件,如click、resize等
2. 资源加载,如load,error等
3. 定时器,包括setInterval、setTimeout等
代码样例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
</style>
</head>
<body>
<script>
console.log(1);
document.onclick = function(){//只有触发了监听事件,回调函数才会进入任务队列
console.log(1)
}
console.log(2);
setTimeout(function(){//只有触发了定时器的3秒钟,回调函数才会进入任务队列
console.log(3);
},3000);
console.log(4);
</script>
</body>
</html>
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!