inheritedProperties

    Return an array of an object's inherited property names and symbols.

    Usage

    var inheritedProperties = require( '@stdlib/utils/inherited-properties' );
    

    inheritedProperties( obj[, level] )

    Returns an array of an object's inherited property names and symbols.

    var props = inheritedProperties( [ 1, 2, 3 ] );
    // returns [...]
    

    By default, the function walks an object's entire prototype chain. To limit the inheritance level, provide a level argument.

    var props = inheritedProperties( [ 1, 2, 3 ], 1 );
    

    Examples

    var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' );
    var Symbol = require( '@stdlib/symbol/ctor' );
    var defineProperty = require( '@stdlib/utils/define-property' );
    var inheritedProperties = require( '@stdlib/utils/inherited-properties' );
    
    var hasSymbols;
    var props;
    var obj;
    
    hasSymbols = hasSymbolSupport();
    
    function Foo() {
        this.a = 'b';
        defineProperty( this, 'foo', {
            'configurable': false,
            'enumerable': false,
            'writable': false,
            'value': 'bar'
        });
        if ( hasSymbols ) {
            this[ Symbol( 'a' ) ] = 'b';
            defineProperty( this, 'beep', {
                'configurable': false,
                'enumerable': false,
                'writable': false,
                'value': 'boop'
            });
        }
        return this;
    }
    
    Foo.prototype.c = 'd';
    defineProperty( Foo.prototype, 'bip', {
        'configurable': false,
        'enumerable': false,
        'writable': false,
        'value': 'bap'
    });
    if ( hasSymbols ) {
        Foo.prototype[ Symbol( 'c' ) ] = 'd';
        defineProperty( Foo.prototype, Symbol( 'e' ), {
            'configurable': false,
            'enumerable': false,
            'writable': false,
            'value': 'f'
        });
    }
    
    obj = new Foo();
    props = inheritedProperties( obj );
    
    console.log( props );
    // => [ ..., 'c', 'bip', ... ]