编程语言
首页 > 编程语言> > javascript-箭头功能用作方法:此值

javascript-箭头功能用作方法:此值

作者:互联网

MDN提供以下箭头功能的两个示例

例子1

var adder = {
  base: 1,

  addThruCall: function(a) {
    var f = v => v + this.base;
    var b = {
      base: 2
    };

    return f.call(b, a);
  }
};

console.log(adder.addThruCall(1)); // 2

例子2

'use strict';
var obj = {
  i: 10,
  b: () => console.log(this.i, this),
  c: function() {
    console.log(this.i, this);
  }
}
obj.b(); // prints undefined, Window {...} (or the global object)
obj.c(); // prints 10, Object {...}

>示例1中的this.base指向adder.base
>示例2中属性b的this.i解析为undefined

如果箭头函数没有this值,this.base是否也应解析为undefined?

解决方法:

箭头函数有一个“ this”,即定义它们时当前范围内的“ this”.

在第二个示例中,在箭头函数b()中,由于没有特定的父范围定义“ this”,因此“ this”指向“ Window”(在浏览器上下文中)

同样在第二个示例中,在命名函数c()中,function()…引入了作用域,默认情况下未定义.

因此,您所看到的完全是可以预期的.但是,如您所见,“ this”很难掌握,因此良好的代码风格建议您尽可能避免使用它.在这种情况下,您可能要使用闭包.

有趣的是,在另一个问题中阅读了这个内容:How does the “this” keyword work?

标签:arrow-functions,javascript
来源: https://codeday.me/bug/20191025/1928483.html