1 回答
TA贡献1921条经验 获得超9个赞
代码会有所帮助,但假设我理解正确,你有一些伪代码,如:
export class Class{
constructor(){
this.name = "foo";
}
usersOnline(){
return main.connectedPlayers();
}
}
-----
require('Class.js');
function connectedPlayers(){
// stuff...
return [Object]
}
...
var class1 = new Class();
console.log(class1.name); // correctly gives "foo"
console.log(class1.usersOnline()); // gives main not defined
这是因为 class.js 没有指向主类的链接。仅仅因为对象在 main.js 中被初始化并不意味着对象知道在它之外发生了什么。您需要在创建时告诉对象,它是什么的一部分。一种常见的方法是传递主类的“上下文”。(里程会有所不同)
constructor(context){
this.name = "foo";
this.main = context;
}
---
var class1 = new Class(this);
现在在创建时,该类知道当它被要求运行它的 usersOnline() 函数时应该引用哪个对象。
请注意,与我列出的方法相比,有更优雅的方法可以做到这一点,但我列出的方法希望能表明通常以更优雅的方式实现的想法,请参阅此答案以获取另一种方法和更多链接。
添加回答
举报