首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

如何正确的判断this? 箭头函数的this是什么?

2024-12-18 来源:华拓网

this的绑定规则有四种:默认绑定,隐式绑定,显式绑定,new绑定

  1. 函数是否在 new 中调用(new绑定),如果是,那么 this 绑定的是新创建的对象。
  2. 函数是否通过 call,apply 调用,或者使用了 bind (即显示绑定),如果是,那么this绑定的就是指定的对象。
  3. 函数是否在某个上下文对象中调用(隐式绑定),如果是的话,this 绑定的是那个上下文对象。一般是 obj.foo()
  4. 如果以上都不是,那么使用默认绑定。如果在严格模式下,则绑定到 undefined,否则绑定到全局对象。
  5. 如果把 null 或者 undefined 作为 this 的绑定对象传入 call、apply 或者 bind, 这些值在调用时会被忽略,实际应用的是默认绑定规则。
  6. 箭头函数没有自己的 this, 它的this继承于上一层代码块的this。

测试下是否已经成功Get了此知识点(浏览器执行环境):

  var number = 5;
  var obj = {
    number: 3,
    fn1: (function () {
      var number;
      this.number *= 2;
      number = number * 2;
      number = 3;
      return function () {
        var num = this.number;
        this.number *= 2;
        console.log(num);
        number *= 3;
        console.log(number);
      }
    })()
  }
  var fn1 = obj.fn1;
  fn1.call(null);
  obj.fn1();
  console.log(window.number);

显示全文