this指向
1、全局作用域下 window
console.log(this) //window
2、普通函数 window
function fn() {
console.log(this) //window
}
fn()
3、立即执行函数IIFE window
// IIFE(立即执行函数)->window (其实就相当于被调用的普通函数)
(function () {
console.log(this) })() // window
(function () {
console.log(this) }()) // window
4、严格模式,全局作用域中的 this
指向 undefined
function fn() {
'use strict'
console.log(this) // 函数内部开启严格模式, this指向undefined
}
fn()
5、对象中的方法中的this谁调用指向谁(指向调用它的这个对象)
let obj = {
name: '张三',
speak: function () {
console.log(this)
}
}
obj.speak() // obj
6、注册事件,指向事件源(给谁注册的事件就指向谁)
<button>按钮</button>
<script>
let btn = document.querySelector('button')
btn.onclick = function () {
console.log(this) // btn
}
</script>
7、定时器里面的回调函数this指向window
// 当定时器结束后,里面的回调函数被当作普通函数使用,所以this指向window
setTimeout(