在另一个 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?
我有 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?