this和作用域不一样,作用域是声明的时候就定下来了,this是在调用的时候才确定下来
this 是一个使用在作用域里面的关键字
-
不管函数怎么定义, 不管函数在哪定义, 只看函数的调用方式
-
函数调用: 不计算箭头函数
1. 全局调用(直接调用) => 函数名() 2. 对象调用 => 对象名.函数名() 3. 事件处理函数 => 元素.onclick = function () {} => 元素.addEventListener('click', function () {}) 4. 定时器处理函数 => setTimeout(function () {}, 时间) => setInterval(function () {}, 时间) 5. 自调用函数(自执行函数) => (function () {})() 6. 构造函数 => new 构造函数名() 以上六种方式中不包含箭头函数, 如果你有用箭头函数书写的函数 => 那么按照箭头函数的规则来确定 this 指向
-
函数内部的 this 指向
1. 全局调用(直接调用) => this 指向 window 2. 对象调用 => 点前面是谁就是谁 => 对象名.函数名() 这里面的 this 就是点前面的那个 对象 -> 比如你写 obj.fn() fn 函数里面的 this 就是 obj -> 比如你写 aaa.fn() fn 函数里面的 this 就是 aaa 3. 事件处理函数调用 => this 指向 事件源 =>