1. 作为一个函数(function)直接被调用,someFunc()
  2. 作为一个方法(method),关联在一个对象上调用, obj.someFunc()
  3. 作为一个构造函数(constructor),实例化一个新的对象, new Func()
  4. 通过函数的apply 或 call 方法调用, someFunc.apply()

作为函数直接被调用

作为构造函数调用

javascript忍者秘籍第2版.jpg

  • 如果构造函数返回一个对象,则该对象将作为整个表达式的值返回,而传入构造函数的 this 将被丢弃。
  • 如果构造函数返回一个非对象类型,则忽略返回值,返回新创建的对象。

箭头函数与bind

:::danger 在全局代码中定义对象字面量,在字面量中定义箭头函数时,箭头函数内的 this 指向全局window对象或 global 对象。 :::