src/components/meta/Base.js
function(property, level /* fields */) {

            var propertyContainers = [];

            if (this.hasOwnProperty(property)) {
                propertyContainers.push(this[property]);
            }

            if (this.__proto && this.__proto.hasOwnProperty(property)) {
                propertyContainers.push(this.__proto[property]);
            }

            var parent  = this.__parent;

            while (parent) {
                if (parent.hasOwnProperty(property)) {
                    propertyContainers.push(parent[property]);
                }
                parent = parent.__parent;
            }

            var fields = _.toArray(arguments).slice(2);
            var propertyValues = {};

            for (var i = 0, ii = propertyContainers.length; i < ii; ++i) {
                this.__collectValues(propertyValues, propertyContainers[i], level || 1, fields);
            }

            return propertyValues;
        }
function(property, level /* fields */) {

            var propertyContainers = [];

            if (this.hasOwnProperty(property)) {
                propertyContainers.push(this[property]);
            }

            if (this.__proto && this.__proto.hasOwnProperty(property)) {
                propertyContainers.push(this.__proto[property]);
            }

            var parent  = this.__parent;

            while (parent) {
                if (parent.hasOwnProperty(property)) {
                    propertyContainers.push(parent[property]);
                }
                parent = parent.__parent;
            }

            var fields = _.toArray(arguments).slice(2);
            var propertyValues = {};

            for (var i = 0, ii = propertyContainers.length; i < ii; ++i) {
                this.__collectValues(propertyValues, propertyContainers[i], level || 1, fields);
            }

            return propertyValues;
        }
function ( property , level /* fields */ ) { var propertyContainers = [ ] ; if ( this . hasOwnProperty ( property ) ) { propertyContainers . push ( this [ property ] ) ; } if ( this . __proto && this . __proto . hasOwnProperty ( property ) ) { propertyContainers . push ( this . __proto [ property ] ) ; } var parent = this . __parent ; while ( parent ) { if ( parent . hasOwnProperty ( property ) ) { propertyContainers . push ( parent [ property ] ) ; } parent = parent . __parent ; } var fields = _ . toArray ( arguments ) . slice ( 2 ) ; var propertyValues = { } ; for ( var i = 0 , ii = propertyContainers . length ; i < ii ; ++ i ) { this . __collectValues ( propertyValues , propertyContainers [ i ] , level || 1 , fields ) ; } return propertyValues ; }
Collect all property values from current and parent clazzes

@param {string} property Property name
@param {number} level    Level of property search depth
@returns {*} Collected property values

@this {clazz|object}
Collect all property values from current and parent clazzes