一、箭头函数
- 箭头函数的this在箭头函数定义的时候就决定的,而且不可修改(call、apply、bind)
- 箭头函数中的this指向定义时候,外层第一个普通函数的this
- 箭头函数没有prototype
- 箭头函数没有arguments
- 不能使用new关键字(使用会报错)
二、bind
- bind不能立即执行,需要被调用
- bind第一个参数为this指向,后面的参数没有限制(值和数组都行)
- 多次bind时只认第一次bind的值
function func() {
console.log(this)
}
func.bind(1).bind(2)() // 1
三、apply
- 立即执行
- 第一个参数为this指向,第二个参数为一个数组
四、call
- 立即执行
- call传参是单个传递
五、obj.
function func() {
console.log(this.x)
}
obj = { x: 1 }
obj.func = func
obj.func() // 1
六、直接调用
function func() {
console.log(this)
} func() // Window
严格模式与非严格模式
严格模式下,全局this为undefind
非严格模式下,全局this为window