# writablePropertySymbols > Return an array of an object's own writable symbol properties.
## Usage ```javascript var writablePropertySymbols = require( '@stdlib/utils/writable-property-symbols' ); ``` #### writablePropertySymbols( obj ) Returns an `array` of an object's own writable 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 = writablePropertySymbols( 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 hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' ); var Symbol = require( '@stdlib/symbol/ctor' ); var writablePropertySymbols = require( '@stdlib/utils/writable-property-symbols' ); var hasSymbols = hasSymbolSupport(); var symbols; var obj; function Foo() { if ( hasSymbols ) { this[ Symbol( 'baz' ) ] = 'qux'; } return this; } if ( hasSymbols ) { Foo.prototype[ Symbol( 'bip' ) ] = 'bop'; } obj = new Foo(); symbols = writablePropertySymbols( obj ); console.log( symbols ); ```