Возможно ли использовать замыкания в AS2, как в Javascript? - PullRequest
2 голосов
/ 23 августа 2010

Мне интересно, возможно ли создать замыкание в 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, я хочу хотя бы немного повеселиться с ним:)
спасибо!
Аарон

Ответы [ 2 ]

1 голос
/ 14 июля 2012

В этой статье объясняется, как можно использовать анонимные функции для обхода областей, что я и искал, во-первых, я просто не знал;

1 голос
/ 23 августа 2010

Похоже, вы пытаетесь использовать actionscript, как если бы это было объектно-ориентированное программирование в стиле javascript. Причина, по которой вам нужно использовать замыкания в javascript, заключается в том, что в javascript отсутствуют возможности пространства имен ActionScript и других классических языков. Это единственный способ создавать защищенные свойства и методы в javascript.

Я настоятельно рекомендую вам создать внешний класс для ваших утилитных объектов, чтобы их можно было повторно использовать в других проектах. Но если вы хотите создать один временный объект, вы можете сделать это:

var util = new Object();
    util.myUtils = new BlaBla();
    util.property = myUtils.blaBlaBla();
    util.init = function() {
      //Do some stuff here
    }
...