我使用limejs并声明了一个类似的函数:
function up(){
var pos = global.getPosition();
pos.x += 2;
global.setPosition(pos);
}
并使用
调用它lime.scheduleManager.schedule(up,global);
如何摆脱全局变量?
答案 0 :(得分:7)
你可以随时删除对象上的属性(注意全局变量实际上在window
,至少在浏览器javascript中)
delete window.global;
如果您尝试访问变量,则会收到Reference错误。要小心,因为如果你的schedule
调用稍后调用该方法,并且它依赖于全局,它将会消失。可能只是使用局部变量(var
)
答案 1 :(得分:1)
如果您没有在其他地方引用该功能,为什么不呢:
lime.scheduleManager.schedule(function (){
var pos = global.getPosition();
pos.x += 2;
global.setPosition(pos);
}, global);
答案 2 :(得分:1)
由于schedule
的第二个参数是上下文对象,并且您将global
传递给它,您可以将该函数编写为
function up(){
var pos = this.getPosition();
pos += 2;
this.setPosition(pos);
}
如果这确实是你所要求的。
如果您只需要删除变量,则可以将其设置为null。运算符delete
用于删除对象属性,而不是取消设置变量。
答案 3 :(得分:0)
如果你的意思是标记它可以被垃圾收集,你可以将引用设置为null。如果没有其他引用,则下次gc启动时该对象将被gc'd。
答案 4 :(得分:-1)
在常规JavaScript中,它将是:
delete global.myVar
或
delete pos
不是100%确定这是否适用于limejs(从未使用过),但值得一试。