- 全局环境
- window
- 事件处理函数
- DOM事件处理函数
- 内联事件处理函数
- 函数内部
- 函数直接执行
- 非严格模式下
- 默认指向全局对象
- 浏览器
- node
- node交互界面中
- js文件中
- 默认指向全局对象
- 严格模式下(前面省略window,浏览器严格模式支持)
- undefined
- 非严格模式下
- call,apply和bind
- 把this的值从一个执行环境传入另一个执行环境
- call和apply的参数差异
- 如果传入的不是对象会调用相对的构造函数,进行隐式转换
- bind
- 返回一个新函数,内部this指向被修改
- 只会改变一次
- 把this的值从一个执行环境传入另一个执行环境
- 函数直接执行
- 箭头函数内部
- 与定义时的环境中 this 一致
- 点击元素定时改变
- bind,call不能修改其内部指向
- 全局中定义箭头函数
- 全局对象
- 对象内函数定义箭头函数
- 对象内函数返回箭头函数
- 与定义时的环境中 this 一致
- 对象方法内部
- 当函数作为对象里的方法被调用时
- 调用该函数的对象
- 对象后续附属上的方法调用
- 调用该函数的对象
- 作为函数内嵌套多层的方法调用
- 就近绑定
- 当函数作为对象里的方法被调用时
- 构造函数中
- 构造函数中没有显式return
- 构造函数中显式return
- return 对象
- return 非对象
- 原型链上函数
- 调用该函数的对象
- getter 和 setter 中
- get访问
- set设置