js/libs/ember-1.5.1.js
function(fn, includeSelf) {
    var childViews = (includeSelf === false) ? this._childViews : [this];
    var currentViews, view, currentChildViews;

    while (childViews.length) {
      currentViews = childViews.slice();
      childViews = [];

      for (var i=0, l=currentViews.length; i<l; i++) {
        view = currentViews[i];
        currentChildViews = view._childViews ? view._childViews.slice(0) : null;
        fn(view);
        if (currentChildViews) {
          childViews.push.apply(childViews, currentChildViews);
        }
      }
    }
  }
function(fn, includeSelf) {
    var childViews = (includeSelf === false) ? this._childViews : [this];
    var currentViews, view, currentChildViews;

    while (childViews.length) {
      currentViews = childViews.slice();
      childViews = [];

      for (var i=0, l=currentViews.length; i<l; i++) {
        view = currentViews[i];
        currentChildViews = view._childViews ? view._childViews.slice(0) : null;
        fn(view);
        if (currentChildViews) {
          childViews.push.apply(childViews, currentChildViews);
        }
      }
    }
  }
function ( fn , includeSelf ) { var childViews = ( includeSelf === false ) ? this . _childViews : [ this ] ; var currentViews , view , currentChildViews ; while ( childViews . length ) { currentViews = childViews . slice ( ) ; childViews = [ ] ; for ( var i = 0 , l = currentViews . length ; i < l ; i ++ ) { view = currentViews [ i ] ; currentChildViews = view . _childViews ? view . _childViews . slice ( 0 ) : null ; fn ( view ) ; if ( currentChildViews ) { childViews . push . apply ( childViews , currentChildViews ) ; } } } }
Run this callback on the current view (unless includeSelf is false) and recursively on child views.

@method invokeRecursively
@param fn {Function}
@param includeSelf {Boolean} Includes itself if true.
@private
Run this callback on the current view ( unless includeSelf is false ) and recursively on child views .