关于this的指向,理论知识

117 阅读2分钟

1。开启了严格模式,只是说使得函数内的this指向undefined,它并不会改变全局中this的指向。

2.如果把var改成了let 或者 const,变量是不会被绑定到window上的,

3.this 永远指向最后调用它的那个对象

4。以说,如果你把一个函数当成参数传递到另一个函数的时候,也会发生隐式丢失的问题,且与包裹着它的函数的this指向无关。在非严格模式下,会把该函数的this绑定到window上,严格模式下绑定到undefined。

5 匿名函数的this永远指向window

6 使用.call()或者.apply()的函数是会直接执行的

7 bind()是创建一个新的函数,需要手动调用才会执行

8 如果call、apply、bind接收到的第一个参数是空或者null、undefined的话,则会忽略这个参数

9 forEach、map、filter函数的第二个参数也是能显式绑定this

10 箭头函数中没有 this 绑定,必须通过查找作用域链来决定其值,如果箭头函数被非箭头函数包含,则 this 绑定的是最近一层非箭头函数的 this,否则,this 为 undefined

11 它里面的this是由外层作用域来决定的,且指向函数定义时的this而非执行时

12 字面量创建的对象,作用域是window,如果里面有箭头函数属性的话,this指向的是window

13 构造函数创建的对象,作用域是可以理解为是这个构造函数,且这个构造函数的this是指向新建的对象的,因此this指向这个对象。

14 箭头函数的this是无法通过bind、call、apply直接修改,但是可以通过改变作用域中this的指向来间接修改。

15 默认情况下,自执行函数的this指向window