ES6的this指向
this 指向问题是入坑前端必须了解知识点,现在迎来了ES6时代,因为箭头函数的出现,所以感觉有必要对 this 问题梳理一下,遂有此文在非箭头函数下, this 指向调用其所在函数的对象,而且是就近原则;构造函数下,this与被创建的新对象绑定;DOM事件,this指向触发事件的元素;内联事件分两种情况,bind绑定, call & apply 方法等, 容以下一步一步讨论。箭头函数也会穿插其中进行讨论。
全局环境下
在全局环境下,this 始终指向全局对象(window), 无论是否严格模式;
console.log(this.document ===document); true 在浏览器中,全局对象为 window 对象:console.log(this===window); truethis.a =37;console.log(window.a); 37
this指向的形式4种
1.如果是一般函数,this指向全局对象window;
2.在严格模式下"use strict",为undefined.
3.对象的方法里调用,this指向调用该方法的对象.
4.构造函数里的this,指向创建出来的实例.
改变this指向的方式
以下属于函数的方法
改变this的指向并且执行调用函数
.call(), call(thisScope, arg1, arg2, arg3...)
.apply(), apply(thisScope, [arg1, arg2, arg3...]);两个参数
而bind 改变this的指向,返回的是函数
.bind() bind(thisScope, arg1, arg2, arg3...)