JavaScript中this指向比较混乱,本篇文章介绍一个新的简单方法,可以彻底掌握this的指向。
web前端学习扣qun:584226069免费领取全套教学视频资料!JavaScript语言中的this相对与其他强类型语言中的this更为复杂和混乱,主要体现在:
JavaScript中所有方法在执行时都可以使用this;
this指向是在方法运行时决定的,同一个方法不同方式调用时其运行时this指向也不同;
this指向可以修改(可以通过相关方法改变方法的this指向,执行该方法的过程中时this是不可以被修改的);
JavaScript中this有以下特点:
this是执行上下文环境中的一个不可变属性;
this是没有一个类似搜寻变量的过程。当你在代码中使用了this,这个this的值就直接从执行的上下文中获取了,而不会从作用域链中搜寻。this的值只取决中进入上下文时的情况。
确认JavaScript中this的指向只需要记住以下三点:
方法默认指向window(node中为global),在严格模式下默认指向undefined;
方法有调用者则指向调用者,如obj.test(), 则test方法执行时的this会指向obj。
apply, call, bind 可以改变this指向,指向你绑定的对象。
实例:
无调用者的情况:
案例1:
web前端学习扣qun:584226069免费领取全套教学视频资料!案例2:
web前端学习扣qun:584226069免费领取全套教学视频资料!案例3:
web前端学习扣qun:584226069免费领取全套教学视频资料!有调用这情况:
案例4:
web前端学习扣qun:584226069免费领取全套教学视频资料!有调用者和无调用者对比:
案例5:
web前端学习扣qun:584226069免费领取全套教学视频资料!特殊情况:
1. new 操作符:
构造函数执行前先创作一个空对象,并将this执行该空对象;然后执行构造函数,执行完将this对象返回
web前端学习扣qun:584226069免费领取全套教学视频资料!2.箭头函数
this与封闭词法上下文的this保持一致。
web前端学习扣qun:584226069免费领取全套教学视频资料!
网友评论