在对象文字的声明中继承上下文(this)? “自我”好吗?

时间:2016-04-01 00:03:48

标签: javascript

是否可以移除此代码段中的self变量:

class Foobar {
  constructor() {
    let self = this; // How do I remove self?
    let fizz = buzz.doSomething({
      aFunction: self.someFun 
    });
  }

  someFun() {
  }
}

一个选项可能是定义一个空对象,然后使用该键分配该函数。

let options = {};
options[aFunction] = this.doSomething;
let fizz = buzz.doSomething(options);

如果选项对象变成了10个列表的列表,那么将它们全部包裹在一对大括号中会不会更好?

我是否在思考它?

1 个答案:

答案 0 :(得分:0)

您可以在代码段中安全地使用thisthis仅在您使用function(){}语法调用函数时更改其含义。 在您的情况下,您只需创建一个对象文字,其中this仍然与self相同。

constructor() {
    let fizz = buzz.doSomething({
       aFunction: this.someFun 
    });
}

这完全没问题。甚至做了jsfiddle

如果您想深入了解MDN上的this