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() 函數時應該引用哪個對象。
請注意,與我列出的方法相比,有更優雅的方法可以做到這一點,但我列出的方法希望能表明通常以更優雅的方式實現的想法,請參閱此答案以獲取另一種方法和更多鏈接。
添加回答
舉報