严格模式下,独立调用的函数的this指向时undefined
typeof null => object
typeof undefined => undefined
箭头函数
箭头函数的返回值如果是一个对象,需要加一个小括号()
item => ({ name: ‘beichen’ })
- 箭头函数中压根没有this,不能绑定arguments,super参数
- 箭头函数是没有显示原型的,所以不能作为构造函数,不能使用new来创建对象
this绑定的规则的优先级
- 1.默认绑定的优先级是最低的
- 2.显式绑定的优先级高于隐式绑定
- 3.apply/bind/call的优先级高于隐式绑定
- 4.new绑定优先级高于隐式绑定
- 5.new不能和apply和call一起使用,也没有可比性
- 6.new的优先级高于bind的优先级
- 7.bind的优先级高于apply和call
优先级排序
1.new
2.bind
3.apply/call
4.隐式绑定
5.默认绑定(独立函数调用)
sb面试题function foo() { console.log(this) } var obj1 = { name: 'obj1', foo: foo } var obj2 = { name: 'obj2' }; (obj2.foo = obj1.foo)() // this => Window