code: function(o){
              if(!Ext.isReady){
                  Ext.onReady(function(){
                      Ext.addBehaviors(o);
                  });
              } else {
                  var cache = {}, // simple cache for applying multiple behaviors to same selector does query multiple times
                      parts,
                      b,
                      s;
                  for (b in o) {
                      if ((parts = b.split('@'))[1]) { // for Object prototype breakers
                          s = parts[0];
                          if(!cache[s]){
                              cache[s] = Ext.select(s);
                          }
                          cache[s].on(parts[1], o[b]);
                      }
                  }
                  cache = null;
              }
          }
docs: Applies event listeners to elements by selectors when the document is ready.
  The event name is specified with an `@` suffix.
  
  Ext.addBehaviors({
  // add a listener for click on all anchors in element with id foo
  '#foo a@click' : function(e, t){
  // do something
  },
  
  // add the same listener to multiple selectors (separated by comma BEFORE the @)
  '#foo a, #bar span.some-class@mouseover' : function(){
  // do something
  }
  });
  
  @param {Object} obj The list of behaviors to apply