this对象

  • 全局环境
    • window

  • 事件处理函数
    • DOM事件处理函数
    • 内联事件处理函数

  • 函数内部
    • 函数直接执行
      • 非严格模式下
        • 默认指向全局对象
          • 浏览器
          • node
            • node交互界面中
            • js文件中
      • 严格模式下(前面省略window,浏览器严格模式支持)
        • undefined
    • call,apply和bind
      • 把this的值从一个执行环境传入另一个执行环境
        • call和apply的参数差异
        • 如果传入的不是对象会调用相对的构造函数,进行隐式转换
      • bind
        • 返回一个新函数,内部this指向被修改
        • 只会改变一次

  • 箭头函数内部
    • 与定义时的环境中 this 一致
      • 点击元素定时改变
    • bind,call不能修改其内部指向
    • 全局中定义箭头函数
      • 全局对象
    • 对象内函数定义箭头函数
    • 对象内函数返回箭头函数

  • 对象方法内部
    • 当函数作为对象里的方法被调用时
      • 调用该函数的对象
    • 对象后续附属上的方法调用
      • 调用该函数的对象
    • 作为函数内嵌套多层的方法调用
      • 就近绑定

  • 构造函数中
    • 构造函数中没有显式return
    • 构造函数中显式return
      • return 对象
      • return 非对象

  • 原型链上函数
    • 调用该函数的对象

  • getter 和 setter 中
    • get访问
    • set设置