为什么这段代码的最后一行不起作用? 如何在不更改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();
答案 0 :(得分:1)
这只是解释为什么它不起作用,解决方案已经在注释中。
为什么这段代码的最后一行不起作用
将其分解以更清楚地了解它。
在这一行
const f = obj.getName;
您正在复制函数getName
的定义,并将其设置为f
。
f
现在是您定义的普通函数。
let f = function getName() {
return this._name;
}
现在,如果您愿意的话,this
会不会被定义吗?