dist/regular/strict/dejavu.js
function inspectConstructor(target, cache) {
        // If browser has no define property it means it is too old and
        // in that case we return the target itself.
        // This could be improved but I think it does not worth the trouble
        if (!hasDefineProperty) {
            return target;
        }

        var def,
            methodsCache,
            propertiesCache,
            membersCache,
            obj,
            tmp,
            key;

        obj = fetchCache(target, cache.constructors);
        if (obj) {
            return obj;
        }

        def = target[$class];
        obj = def.simpleConstructor;
        methodsCache = target[cacheKeyword].methods;
        propertiesCache = target[cacheKeyword].properties;

        cache.constructors.push({ target: target, inspect: obj });

        // Constructor methods
        for (key in methodsCache) {
            obj[key] = inspect(methodsCache[key], cache, true);
        }

        // Constructor properties
        for (key in propertiesCache) {
            tmp = propertiesCache[key];
            obj[key] = inspect(tmp, cache, true);
        }

        // Handle constructor undeclared properties
        methodsCache = def.methods;
        propertiesCache = def.properties;
        for (key in target) {
            if (hasOwn(target, key) && !hasOwn(obj, key) && !propertiesCache[key] && !methodsCache[key]) {
                obj[key] = inspect(target[key], cache, true);
            }
        }

        obj = obj.prototype;

        // Prototype members
        target = target.prototype;
        membersCache = def.ownMembers;
        methodsCache = def.methods;
        propertiesCache = def.properties;

        for (key in membersCache) {
            tmp = methodsCache[key] ? methodsCache[key].implementation : propertiesCache[key].value;
            obj[key] = inspect(tmp, cache, true);
        }

        // Handle undeclared prototype members
        for (key in target) {
            if (hasOwn(target, key) && !hasOwn(obj, key) && !membersCache[key]) {
                obj[key] = inspect(target[key], cache, true);
            }
        }

        return obj;
    }
function inspectConstructor(target, cache) {
        // If browser has no define property it means it is too old and
        // in that case we return the target itself.
        // This could be improved but I think it does not worth the trouble
        if (!hasDefineProperty) {
            return target;
        }

        var def,
            methodsCache,
            propertiesCache,
            membersCache,
            obj,
            tmp,
            key;

        obj = fetchCache(target, cache.constructors);
        if (obj) {
            return obj;
        }

        def = target[$class];
        obj = def.simpleConstructor;
        methodsCache = target[cacheKeyword].methods;
        propertiesCache = target[cacheKeyword].properties;

        cache.constructors.push({ target: target, inspect: obj });

        // Constructor methods
        for (key in methodsCache) {
            obj[key] = inspect(methodsCache[key], cache, true);
        }

        // Constructor properties
        for (key in propertiesCache) {
            tmp = propertiesCache[key];
            obj[key] = inspect(tmp, cache, true);
        }

        // Handle constructor undeclared properties
        methodsCache = def.methods;
        propertiesCache = def.properties;
        for (key in target) {
            if (hasOwn(target, key) && !hasOwn(obj, key) && !propertiesCache[key] && !methodsCache[key]) {
                obj[key] = inspect(target[key], cache, true);
            }
        }

        obj = obj.prototype;

        // Prototype members
        target = target.prototype;
        membersCache = def.ownMembers;
        methodsCache = def.methods;
        propertiesCache = def.properties;

        for (key in membersCache) {
            tmp = methodsCache[key] ? methodsCache[key].implementation : propertiesCache[key].value;
            obj[key] = inspect(tmp, cache, true);
        }

        // Handle undeclared prototype members
        for (key in target) {
            if (hasOwn(target, key) && !hasOwn(obj, key) && !membersCache[key]) {
                obj[key] = inspect(target[key], cache, true);
            }
        }

        return obj;
    }
function inspectConstructor ( target , cache ) { // If browser has no define property it means it is too old and // in that case we return the target itself. // This could be improved but I think it does not worth the trouble if ( ! hasDefineProperty ) { return target ; } var def , methodsCache , propertiesCache , membersCache , obj , tmp , key ; obj = fetchCache ( target , cache . constructors ) ; if ( obj ) { return obj ; } def = target [ $class ] ; obj = def . simpleConstructor ; methodsCache = target [ cacheKeyword ] . methods ; propertiesCache = target [ cacheKeyword ] . properties ; cache . constructors . push ( { target : target , inspect : obj } ) ; // Constructor methods for ( key in methodsCache ) { obj [ key ] = inspect ( methodsCache [ key ] , cache , true ) ; } // Constructor properties for ( key in propertiesCache ) { tmp = propertiesCache [ key ] ; obj [ key ] = inspect ( tmp , cache , true ) ; } // Handle constructor undeclared properties methodsCache = def . methods ; propertiesCache = def . properties ; for ( key in target ) { if ( hasOwn ( target , key ) && ! hasOwn ( obj , key ) && ! propertiesCache [ key ] && ! methodsCache [ key ] ) { obj [ key ] = inspect ( target [ key ] , cache , true ) ; } } obj = obj . prototype ; // Prototype members target = target . prototype ; membersCache = def . ownMembers ; methodsCache = def . methods ; propertiesCache = def . properties ; for ( key in membersCache ) { tmp = methodsCache [ key ] ? methodsCache [ key ] . implementation : propertiesCache [ key ] . value ; obj [ key ] = inspect ( tmp , cache , true ) ; } // Handle undeclared prototype members for ( key in target ) { if ( hasOwn ( target , key ) && ! hasOwn ( obj , key ) && ! membersCache [ key ] ) { obj [ key ] = inspect ( target [ key ] , cache , true ) ; } } return obj ; }
Inspects an constructor.

@param {Function} target The constructor

@return {Object} The inspected constructor
Inspects an constructor .