this指向问题

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...)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容