function writableProperties( value ) {
	var out;
	var tmp;
	var n;
	var i;

	out = propertyNames( value );
	n = 0;
	for ( i = 0; i < out.length; i++ ) {
		if ( isWritable( value, out[ i ] ) ) {
			out[ n ] = out[ i ];
			n += 1;
		}
	}
	out.length = n;

	tmp = propertySymbols( value );
	for ( i = 0; i < tmp.length; i++ ) {
		if ( isWritable( value, tmp[ i ] ) ) {
			out.push( tmp[ i ] );
		}
	}
	return out;
}
Returns an array of an object's own writable property names and symbols.

@param {*} value - input object
@returns {Array} a list of own property writable names and symbols

@example
var obj = {
    'beep': 'boop',
    'foo': 3.14
};

var props = writableProperties( obj );
// e.g., returns [ 'beep', 'foo' ]