我想知道是否可以在ActionScript2中创建一个闭包,就像在Javascript中一样 这不起作用:
var util = function(){
var init = function(){
trace(this + ': util'); // i want to know this thing works!
var myUtils = new MyAS2Utils(); // load some stuff
var url = myUtils.getURLInSomeReallyCoolWay(); // really, this is all fluff isn't it?
myAwesomeButton.onRelease = function(){
getURL(url,"_blank");
}
}
// and return the goods
return {
init : function(){
init();
}
}
}();
// now call the init funciton
util.init();
我尝试过其他方法,但它永远不会奏效。我希望这是可能的,因为如果我被迫使用AS2,我想至少对它有一点乐趣:)
谢谢!
亚伦
答案 0 :(得分:1)
看起来你正在尝试使用actionscript,就像它是javascript风格的面向对象编程一样。你需要在javascript中使用闭包的原因是因为javascript缺少actionscript和其他经典语言的命名空间能力。它是在javascript中创建受保护属性和方法的唯一方法。
我强烈建议您为util对象创建一个外部类,这样它们就可以完全重用于其他项目。但是如果你想创建一个临时对象,你可以这样做:
var util = new Object();
util.myUtils = new BlaBla();
util.property = myUtils.blaBlaBla();
util.init = function() {
//Do some stuff here
}
答案 1 :(得分:1)
本文阐述了如何使用匿名函数来传递范围 - 这是我一开始真正想要的 - 我只是不知道它;) http://studiokoi.com/blog/article/making_anonymous_functions_and_closures_work_in_actionscript_20