stdprop

v1.0.2
Define object properties without boilerplate
object defineProperty property define enumerable writable configurable getter setter and 3 more...

stdprop

Define object properties without boilerplate

Usage

With this modules, you can define object properties using the following shorthand (original longhand included for reference):

var prop = require('stdprop')
var obj = {}

// non-enumerable and non-writable
// with stdprop:
prop(obj, 'one', 'stuff')

// previously:
Object.defineProperty(obj, 'stuff', {
  value: 'stuff'
})

// enumerable and non-writable
// with stdprop:
prop(obj, 'one', 'stuff', 'e')

// previously:
Object.defineProperty(obj, 'stuff', {
  value: 'stuff',
  enumerable: true
})

// enumerable and writable
// with stdprop:
prop(obj, 'one', 'stuff', 'ew')

// previously:
Object.defineProperty(obj, 'stuff', {
  value: 'stuff',
  enumerable: true,
  writable: true
})

getters & setters

Also included are two shorthand methods to create getters and setters on any given object.

var { getter, setter } = require('stdprop')

var interface = {}
var storage = {}
setter(interface, 'shout', function (str) { storage.shout = str.toUpperCase() })
getter(interface, 'shout', function () { return storage.shout + '!' })

interface.shout = 'hello'
console.log(interface.shout) // => 'HELLO!'
console.log(storage.shout) // => 'HELLO'

Acknowledgement

The idea of using shorthand flags to create property descriptors was taken from the existing module prr.

License

Apache-2.0

npm i stdprop

Metadata

Downloads

Maintainers