Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

特殊情况下this的引用总结 #20

Open
shiiiiiiji opened this issue May 26, 2018 · 0 comments
Open

特殊情况下this的引用总结 #20

shiiiiiiji opened this issue May 26, 2018 · 0 comments

Comments

@shiiiiiiji
Copy link
Owner

shiiiiiiji commented May 26, 2018

首先,对于this的理解,我个人看到有两种说法:

  1. this是函数的一个内部属性,见js高程第三版p113,引用的是(,或者说this的值是)函数据以执行的环境对象,或者说this对象是在运行时基于函数的执行环境绑定的(js高程第三版p182)
  2. this是函数执行上下文的一部分。(执行上下文是在代码执行前(非定义时)会创建的一个环境,环境创建完成之后才会真正开始执行代码,而其中代码里所需要的变量都会优先从当前上下文中查询,除了this和arguments这两个变量只会从当前环境中查找)

常规情况下,我们一般都认为this的引用有如下几种情况:

  • 构造函数作为构造函数执行的时候,其中的this指向的是要返回的实例
  • 作为对象的方法执行时,方法中的this引用的就是该对象
  • 作为普通方法执行时,其中的this引用的是函数所处的环境
  • 使用apply、call、bind等方法可以直接修改函数执行过程中的this值

其实,还有一些特殊情况:

  • 匿名函数执行时,this指向全局(js高程p182,匿名函数的执行环境具有全局性)
    image
  • 超时调用和间歇调用的函数执行时,this指向全局(可以理解为window.setTimeout())
  • 事件处理程序在正常情况下,this指向绑定元素对象的引用
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant