JS中this指向

101 阅读1分钟

一、箭头函数

  1. 箭头函数的this在箭头函数定义的时候就决定的,而且不可修改(call、apply、bind)
  2. 箭头函数中的this指向定义时候,外层第一个普通函数的this
  3. 箭头函数没有prototype
  4. 箭头函数没有arguments
  5. 不能使用new关键字(使用会报错)

二、bind

  1. bind不能立即执行,需要被调用
  2. bind第一个参数为this指向,后面的参数没有限制(值和数组都行)
  3. 多次bind时只认第一次bind的值
function func() {
  console.log(this)
}

func.bind(1).bind(2)() // 1

三、apply

  1. 立即执行
  2. 第一个参数为this指向,第二个参数为一个数组

四、call

  1. 立即执行
  2. 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