# nonEnumerablePropertySymbols > Return an array of an object's own non-enumerable symbol properties.
## Usage ```javascript var nonEnumerablePropertySymbols = require( '@stdlib/utils/nonenumerable-property-symbols' ); ``` #### nonEnumerablePropertySymbols( obj ) Returns an `array` of an object's own non-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': false, 'writable': true, 'value': 'b' }); } var symbols = nonEnumerablePropertySymbols( 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 nonEnumerablePropertySymbols = require( '@stdlib/utils/nonenumerable-property-symbols' ); var hasSymbols = hasSymbolSupport(); var symbols; var obj; function Foo() { if ( hasSymbols ) { defineProperty( this, Symbol( 'baz' ), { 'configurable': false, 'enumerable': false, 'writable': true, 'value': 'qux' }); } return this; } if ( hasSymbols ) { defineProperty( Foo.prototype, Symbol( 'bip' ), { 'configurable': false, 'enumerable': false, 'writable': false, 'value': 'bop' }); } obj = new Foo(); symbols = nonEnumerablePropertySymbols( obj ); console.log( symbols ); ```