JavaScript中函数调用的四种方式及其this指向

123 阅读1分钟

函数调用的方式有4种

  1. 作为函数调用 : usefunction()
  2. 作为方法调用 : user.usefunction()
  3. 作为构造函数调用 : new User()
  4. 通过 applycall 方法调用 :usefunction.apply(somebody) 4种函数调用方式下this指针的指向:
  5. 作为函数调用: 在非严格模式下,this指向全局对象;在严格模式下,this指向undefined
  6. 作为方法调用: this指向调用方法的对象
  7. 作为构造函数调用: this指向构造函数创建的新对象
  8. 通过 applycall 方法调用: this指向 applycall函数的第一个参数 当函数作为构造函数调用(3)时,函数会返回新创建的对象。如果为其显示地添加返回值,会出现以下情况。
  9. 返回值设置为非对象时,依然返回新创建的对象。
  10. 返回值设置为另一个对象时,该对象会代替新创建的对象成为函数的返回值,新对象将被丢弃。 此外,箭头函数的this指向与其声明时所在的上下文相同。 但当箭头函数作为对象字面量定义时,其将在全局代码中定义。
var x={
        a:()=>{ console.log(this) }
      }
x.a();//Window{...}