在另一个 JS 文件中调用全局函数。如何让 'this' 工作?

Calling a global function in another JS file. How do I get 'this' to work?

我有 2 个 js 文件:

file1.js 包含原型 A:

printname: function() {
   console.log('my name is A');
}

getname: function() {
    console.log('getting name..');
    this.printname();
}

然后我将 'getname' 函数放在一个全局变量中,因为我想在任何地方访问它:

globalvar.myfunction = this.getname;

file2.js 包含原型 B:

runmyglobalfunction: function() {
   globalvar.myfunction();
}

当我调用this.runmyglobalfunction时,结果是:

我可以看到控制台日志 'getting name..'。

但是我看不到'my name is A'

我该如何解决这个问题?

您可以 .bind 将函数的 this 值设为特定值:

globalvar.myfunction = this.getname.bind(this);

现在,无论如何调用 globalvar.myfunction,函数内部的 this 将始终引用该行中 this 所引用的内容。

相关:How to access the correct `this` inside a callback?