Non-Enumerable Read-Only Accessor

Define a non-enumerable read-only accessor.

Usage

var setNonEnumerableReadOnlyAccessor = require( '@stdlib/utils/define-nonenumerable-read-only-accessor' );

setNonEnumerableReadOnlyAccessor( obj, prop, getter )

Defines a non-enumerable read-only accessor.

function getter() {
    return 'bar';
}

var obj = {};

setNonEnumerableReadOnlyAccessor( obj, 'foo', getter );

obj.foo = 'boop';
// throws <Error>
## Notes
  • Non-enumerable read-only accessors are non-configurable.

Examples

var setNonEnumerableReadOnlyAccessor = require( '@stdlib/utils/define-nonenumerable-read-only-accessor' );

function Foo( name ) {
    if ( !(this instanceof Foo) ) {
        return new Foo( name );
    }
    setNonEnumerableReadOnlyAccessor( this, 'name', getName );
    return this;

    function getName() {
        return name;
    }
}

var foo = new Foo( 'beep' );

try {
    foo.name = 'boop';
} catch ( err ) {
    console.error( err.message );
}