![](/img/trans.png)
[英]Unable to update global variable inside a function and call it outside it (jQuery)
[英]Unable to call a function that is outside of a class, while being inside VM context
這是我的主要代碼:
const intents = {};
const characters = [
new Character(0, 400, 300),
new Character(1, 500, 200)
];
const vmContextMethods = require('./vm/context_methods.js')(characters);
const vmContext = {
'intents': intents,
'game': Object.freeze(vmContextMethods)
};
vm.createContext(vmContext);
vm.runInContext('characters[0].test();', vmContext, { displayErrors: true });
這是context_methods.js:
module.exports = function(characters) {
const module = {
characters
}
return module;
}
這是角色類:
class Character {
constructor(id, x, y) {
this.id = id;
this.x = x;
this.y = y;
}
test() {
intents.test = true;
}
}
module.exports = Character;
我正在將意圖對象和字符對象傳遞給VM上下文,但無法從字符實例中引用意圖。
我可以在角色實例外部而不是從內部引用意圖。
我的直覺是自從我測試添加console.log(123);以來,這里存在某種上下文/范圍問題。 對於該類,當從類外部進行的所有console.log()調用都到達我的客戶端控制台時(我將自定義控制台對象傳遞給了VM上下文,該123發送到了我的服務器的控制台,而不是客戶端的控制台)通過socket.io發送給客戶端的消息)。
我需要的是整個vm上下文的頂級上下文。 諸如窗口之類的東西,所以我可以在游戲對象內使用“ window.intents”(已編輯)
我將意圖對象移到了Character類。 不完全是一個答案,但我想我最初的想法很糟糕。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.