1 回答

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊
代碼會(huì)有所幫助,但假設(shè)我理解正確,你有一些偽代碼,如:
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
這是因?yàn)?class.js 沒(méi)有指向主類的鏈接。僅僅因?yàn)閷?duì)象在 main.js 中被初始化并不意味著對(duì)象知道在它之外發(fā)生了什么。您需要在創(chuàng)建時(shí)告訴對(duì)象,它是什么的一部分。一種常見(jiàn)的方法是傳遞主類的“上下文”。(里程會(huì)有所不同)
constructor(context){
this.name = "foo";
this.main = context;
}
---
var class1 = new Class(this);
現(xiàn)在在創(chuàng)建時(shí),該類知道當(dāng)它被要求運(yùn)行它的 usersOnline() 函數(shù)時(shí)應(yīng)該引用哪個(gè)對(duì)象。
請(qǐng)注意,與我列出的方法相比,有更優(yōu)雅的方法可以做到這一點(diǎn),但我列出的方法希望能表明通常以更優(yōu)雅的方式實(shí)現(xiàn)的想法,請(qǐng)參閱此答案以獲取另一種方法和更多鏈接。
添加回答
舉報(bào)