# inheritedProperties > Return an array of an object's inherited property names and [symbols][@stdlib/symbol/ctor].
## Usage ```javascript var inheritedProperties = require( '@stdlib/utils/inherited-properties' ); ``` #### inheritedProperties( obj\[, level] ) Returns an `array` of an object's inherited property names and [symbols][@stdlib/symbol/ctor]. ```javascript 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. ```javascript var props = inheritedProperties( [ 1, 2, 3 ], 1 ); ```
## Examples ```javascript 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', ... ] ```