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

Javascript这个关键字,分配上下文绑定函数来调用变量,javascript,Javascript,为什么这段代码的最后一行不起作用? 如何在不改变事物或对象的情况下使其工作? 如何将调用“obj.getName”的上下文绑定函数分配给变量“f”(即表达式“f()”将导致调用“obj.getName”) 这只是解释为什么它不起作用,解决方案已经在评论中了 为什么这段代码的最后一行不起作用 让我们把它分解一下,以便更清楚地理解它 在这一行 const f = obj.getName; 您正在复制函数getName定义,并将其设置为f f现在是一个正常的函数,就像您定义的任何函数一样 let f

为什么这段代码的最后一行不起作用? 如何在不改变事物或对象的情况下使其工作? 如何将调用“obj.getName”的上下文绑定函数分配给变量“f”(即表达式“f()”将导致调用“obj.getName”)


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

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

让我们把它分解一下,以便更清楚地理解它

在这一行

const f = obj.getName;
您正在复制函数
getName
定义,并将其设置为
f

f
现在是一个正常的函数,就像您定义的任何函数一样

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

现在,如果你调用它,
这个
不是没有定义吗?

你需要显式地绑定它:
const f=obj.getName.bind(obj)可能重复的
let f = function getName() {
  return this._name;
}