从Normal函数JS迁移到Arrow函数

时间:2018-03-25 13:10:12

标签: javascript ecmascript-6 hermione

在我的项目中,我不想使用构造function () {},而不是我想使用() => {}() => ()。代码如下。在第一个示例中,我可以看到this,在第二种情况下this未定义。所以我想知道,是否有可能让() => {}看到this?我尝试使用() => {}.bind(this)无效,而({ context: this }) => {}也无效。

// Example 1
describe('Currency converter', () => {
  it('should be shown on the page', function () {
    console.log(this); // { bla: ..., blabla: ... }
    return this.browser
      .url('/')
      .keys(['currence', '\uE007'])
      .isExisting('.converter-form')
      .then((exists) => {
        assert.ok(exists, 'currence did not show');
      });
  });
});

// Example 2
describe('Currency converter', () => {
  it('should be shown on the page', () => {
    console.log(this) // undefinded
    return this.browser
      .url('/')
      .keys(['currence', '\uE007'])
      .isExisting('.converter-form')
      .then((exists) => {
        assert.ok(exists, 'currence did not show');
      });
  });
});

1 个答案:

答案 0 :(得分:1)

没有!即使您尝试绑定它们,箭头函数也不具有this的值。你必须使用长格式。