this的指向的一些问题

  • apply方法:调用函数,同时指定函数中的this指向,参数以数组传递
  • call方法:调用函数,同时指定函数中的this指向,参数以列表传递
  • bind方法:得到一个新函数,该函数中的this始终指向指定的值,永久性绑定。
    (以上三种方法(任何方法)都改变不了箭头函数中的this指向)

this无法赋值

  1. 在全局作用域中,this关键字固定指向全局对象。在浏览器中,window对象即是全局对象
  2. 在函数作用域中,取决于函数是如何被调用的
    1. 函数直接调用,this指向全局对象
    2. 通过一个对象的属性调用,格式为对象.属性()对象["属性"](),this指向对象

1). 直接调用函数,this指向全局对象
2). 在函数外,this指向全局对象
3). 通过对象调用或new一个函数,this指向调用的对象或新对象

箭头函数引入的其中一个原因,就是其不绑定this;在箭头函数中,箭头函数的this被设置为封闭的词法环境的,换句话说,箭头函数中的this取决于该函数被创建时的环境(上下文中的this)
箭头函数没有自己的this值,箭头函数中所使用的this来自于函数作用域链。

原文地址:https://www.cnblogs.com/panghu123/p/11768593.html