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