# enumerablePropertySymbolsIn > Return an array of an object's own and inherited enumerable symbol properties.
## Usage ```javascript var enumerablePropertySymbolsIn = require( '@stdlib/utils/enumerable-property-symbols-in' ); ``` #### enumerablePropertySymbolsIn( obj ) Returns an `array` of an object's own and inherited enumerable symbol properties. ```javascript var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); var Symbol = require( '@stdlib/symbol/ctor' ); var defineProperty = require( '@stdlib/utils/define-property' ); var obj = {}; if ( hasSymbolSupport() ) { defineProperty( obj, Symbol( 'a' ), { 'configurable': false, 'enumerable': true, 'writable': true, 'value': 'b' }); } var symbols = enumerablePropertySymbolsIn( obj ); ```
## Notes - Property order is not guaranteed, as `object` property enumeration is not specified according to the [ECMAScript specification][ecma-262-for-in]. In practice, however, most engines use insertion order to sort an `object`'s properties, thus allowing for deterministic extraction.
## Examples ```javascript var defineProperty = require( '@stdlib/utils/define-property' ); var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); var Symbol = require( '@stdlib/symbol/ctor' ); var enumerablePropertySymbolsIn = require( '@stdlib/utils/enumerable-property-symbols-in' ); var hasSymbols = hasSymbolSupport(); var symbols; var obj; function Foo() { if ( hasSymbols ) { defineProperty( this, Symbol( 'baz' ), { 'configurable': false, 'enumerable': true, 'writable': true, 'value': 'qux' }); } return this; } if ( hasSymbols ) { defineProperty( Foo.prototype, Symbol( 'bip' ), { 'configurable': false, 'enumerable': true, 'writable': false, 'value': 'bop' }); } obj = new Foo(); symbols = enumerablePropertySymbolsIn( obj ); console.log( symbols ); ```