这是如何工作的ES6箭头功能&它与ES5有何不同?这个?

时间:2016-12-10 03:22:03

标签: javascript ecmascript-6

我想看一些关于如何在ES6中使用.this的示例/说明遵循箭头函数语法以及它与ES5。这种绑定的不同之处。

2 个答案:

答案 0 :(得分:0)

这很简单:

在ES6中,你有箭头函数是“匿名的”,因为它们没有适当的上下文。因此,this指的是父上下文。

在ES5中,等价物是一个包含其自身上下文的函数。正确使用this的方法(假设您需要父级的上下文)是这样绑定它:

function something() {//}

// invoke
something().bind(this);

答案 1 :(得分:0)

考虑es5中的以下功能:

        // Scope Problem in es5 :

    var defaultPower = "Laser Vision";

    function superHero() {
      this.defaultPower = "Ice Ray";
      setTimeout(function grantPowers() {
        console.log("Super " + this.defaultPower);
      })
    }

    var IceMan = new superHero();
    // Console logs erroneous "Super Laser Vision"

    // Scope Fix in es5 by using self or _self or that var

    var defaultPower = "Laser Vision";

    function superHero() {
      var self = this;
      self.defaultPower = "Ice Ray";
      setTimeout(function grantPowers() {
        console.log("Super " + self.defaultPower);
      })
    }

    var IceMan = new superHero();
    // Console logs correct "Super Ice Ray"

并在es6中:

      // And with arrow functions:

  var defaultPower = "Laser Vision";

  function superHero() {
    this.defaultPower = "Ice Ray";
    setTimeout(() =>  {
      console.log("Super " + this.defaultPower);
    });
  }

  var IceMan = new superHero();
  // Console logs correct "Super Ice Ray"