# Read-Write Accessor
> [Define][@stdlib/utils/define-property] a **read-write** accessor.
## Usage
```javascript
var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' );
```
#### setReadWriteAccessor( obj, prop, getter, setter )
[Defines][@stdlib/utils/define-property] a **read-write** accessor.
```javascript
var word = 'bar';
var obj = {};
function getter() {
return word + ' foo';
}
function setter( v ) {
word = v;
}
setReadWriteAccessor( obj, 'foo', getter, setter );
var v = obj.foo;
// returns 'bar foo'
obj.foo = 'beep';
v = obj.foo;
// returns 'beep foo'
```
## Notes
- Read-write accessors are **enumerable** and **non-configurable**.
## Examples
```javascript
var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' );
function Foo( name ) {
if ( !(this instanceof Foo) ) {
return new Foo( name );
}
setReadWriteAccessor( this, 'name', getName, setName );
return this;
function getName() {
return 'Hello, ' + name;
}
function setName( v ) {
name = v;
}
}
var foo = new Foo( 'Grace' );
console.log( foo.name );
foo.name = 'Ada';
console.log( foo.name );
```
[@stdlib/utils/define-property]: https://www.npmjs.com/package/@stdlib/utils/tree/main/define-property