用Javascript这个关键字,分配上下文绑定函数来调用变量

时间:2018-10-23 19:53:05

标签: javascript

为什么这段代码的最后一行不起作用? 如何在不更改Thing或obj的情况下使其工作?

如何将赋值给“ obj.getName”的上下文绑定函数赋给变量“ f”(即表达式“ f()”将导致调用“ obj.getName”)?
class Thing{
  constructor(name) {this._name = name;}
  getName() { return this._name;}
}

const obj = new Thing('a');
const f = obj.getName;
const name = f();

1 个答案:

答案 0 :(得分:1)

这只是解释为什么它不起作用,解决方案已经在注释中。

  

为什么这段代码的最后一行不起作用

将其分解以更清楚地了解它。

在这一行

const f = obj.getName;

您正在复制函数getName的定义,并将其设置为f

f现在是您定义的普通函数。

let f = function getName() {
  return this._name;
}

现在,如果您愿意的话,this会不会被定义吗?