1.0.2 • Published 4 years ago

stdprop v1.0.2

Weekly downloads
2
License
Apache-2.0
Repository
github
Last release
4 years ago

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