writablePropertiesIn

    Return an array of an object's own and inherited writable property names and symbols.

    Usage

    var writablePropertiesIn = require( '@stdlib/utils/writable-properties-in' );
    

    writablePropertiesIn( obj )

    Returns an array of an object's own and inherited writable property names and symbols.

    var defineProperty = require( '@stdlib/utils/define-property' );
    
    var obj = {};
    
    defineProperty( obj, 'a', {
        'configurable': false,
        'enumerable': false,
        'writable': true,
        'value': 'a'
    });
    
    var props = writablePropertiesIn( obj );
    // returns [ 'a', ... ]
    

    Examples

    var defineProperty = require( '@stdlib/utils/define-property' );
    var hasSymbolSupport = require( '@stdlib/assert/has-symbol-support' );
    var Symbol = require( '@stdlib/symbol/ctor' );
    var writablePropertiesIn = require( '@stdlib/utils/writable-properties-in' );
    
    var hasSymbols;
    var props;
    var obj;
    
    hasSymbols = hasSymbolSupport();
    
    function Foo() {
        this.a = 'a';
        defineProperty( this, 'b', {
            'configurable': true,
            'enumerable': true,
            'writable': false,
            'value': 'b'
        });
        if ( hasSymbols ) {
            this[ Symbol( 'a' ) ] = 'a';
            defineProperty( this, Symbol( 'b' ), {
                'configurable': true,
                'enumerable': true,
                'writable': false,
                'value': 'b'
            });
        }
        return this;
    }
    
    Foo.prototype.foo = 'bar';
    defineProperty( Foo.prototype, 'beep', {
        'configurable': false,
        'enumerable': false,
        'writable': false,
        'value': 'boop'
    });
    if ( hasSymbols ) {
        Foo.prototype[ Symbol( 'foo' ) ] = 'bar';
        defineProperty( Foo.prototype, Symbol( 'beep' ), {
            'configurable': false,
            'enumerable': false,
            'writable': false,
            'value': 'boop'
        });
    }
    
    obj = new Foo();
    props = writablePropertiesIn( obj );
    
    console.log( props );
    // e.g., => [ 'a', 'foo', ... ]