美文网首页
this指向问题

this指向问题

作者: 63537b720fdb | 来源:发表于2020-06-30 03:26 被阅读0次

1.预编译过程,this指向window
2.全局作用域中,this指向window
3.call()、apply(),改变this指向
4.obj.fun(),fun()里的this指向obj

1.预编译过程中,其实就是函数执行的时候,函数中的this指向window
举例:


image.png
image.png

再举例:
函数执行时,函数中的this指向window,所以this.name获取的是window上的name,而不是函数中name


image.png
image.png

2.全局作用域中,this指向window
举例:

image.png image.png

再举例:
在控制台输出this


image.png

3.call和apply能改变this指向,但是用法不同
举例:
当Car()中的方法完全包含了Model()的方法时,就可以利用call()方法,借用Model()中的方法实现自身功能。
也就是当你用Model调用call()方法时,并在第一个参数传入this要指向的对象时,从第二个参数开始传入Model()的参数,那么Model中用this创建的方法或属性就会传到Car()中,因为这时Model()中this变成了Car()的this。
所以Car()就利用call()的功能,通过Model()中的方法,实现了自己的功能。


image.png image.png

apply()的功能和call()相同,但是用法不同,
call()的第一位参数是this需要指向的对象,第二位参数开始传入需要的参数
apply()中只有两个参数,第一个参数和call()相同,第二个参数是个数组,所以只要把需要的参数放入数组中即可。


image.png

总结:call()和apply()可以改变this指向,但是传参列表不同。

4.obj.fun(),fun()中的this指向obj
举例:
say()由obj对象调用,所以say()中的this指向obj,所以这时输出的name是cherry,而不是sunny


image.png
image.png

相关文章

  • this指向问题

    首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上...

  • this指向问题

    简单一句话来说,this的指向不是在创建时候决定的,而是调用的时候,谁调用就指向谁。 在严格模式下,未指定坏境,而...

  • this指向问题

    三种解决方案 第一种,bind(this)来改变匿名函数的this指向 第二种,var _this= this 第...

  • this指向问题

    一、一般情况 所以用定时器时,一般提前将this保存,便于在定时器内部使用 二、改变this指向 call、 a...

  • this指向问题

    要彻底理解JS中的this指向问题,建议多结合一些相关的面试题,理解记忆,不必硬背 关于this问题:只需记住谁调...

  • this 指向问题

    日期:2019 年 9 月 5 日 this 指向问题 介绍 this 指向问题一直是 js 中一个令人头疼的问题...

  • this指向问题

  • this 指向问题

    认识function中的this在不同环境下的指向 全局:浏览器环境中 指向window,node环境:modul...

  • this指向问题

    1. 事件调用环境 谁触发的this指向谁 如上代码,分别给box1,box2绑定了clickBox方法,如果点击...

  • this指向问题

    1.预编译过程,this指向window2.全局作用域中,this指向window3.call()、apply()...

网友评论

      本文标题:this指向问题

      本文链接:https://www.haomeiwen.com/subject/ivqzfktx.html