defp

1.0.0 • Public • Published

defp.js

NPM version Dependency Status Travis CI codecov

Define object properties in an easier way. Inspired by prr.

Install

npm i defp

Requirements

  • defp written in ES2015, use transpiler when needed
  • Add Object.assign polyfill if it's not available

Usage

const defp = require('defp')
 
defp(TARGET_OBJECT, KEY, [VALUE, [DESCRIPTOR_OPTIONS]])
defp(obj, 'foo', 'baz')

Equals to:

Object.defineProperty(obj, 'foo', {
  configurable: false,
  enumerable: false,
  writable: false,
  value: 'baz'
})

Descriptor options

defp(obj, 'foo', 'baz', 'cew')
// c === configurable
// e === enumerable
// w === writable
 
defp(obj, 'foo', {
  configurable: true,
  enumerable: true,
  writable: true,
  value: 'baz'
})

Equals:

Object.defineProperty(obj, 'foo', {
  configurable: true,
  enumerable: true,
  writable: true,
  value: 'baz'
})

getter and setter:

defp(obj, 'foo', {
  get () { return this._foo },
  set (val) { this._foo = val }
})

Overriding descriptor options for special key:

defp(obj, {
  privateVar: {
    enumerable: false,
    value: 'privateVar'
  },
 
  publicVar: 'publicVar'
}, 'ew')

Note:

  • If VALUE contains one of these keys: get, set, value, enumerable, configurable, defp will treat VALUE as a descriptor.

Readme

Keywords

none

Package Sidebar

Install

npm i defp

Weekly Downloads

2

Version

1.0.0

License

MIT

Last publish

Collaborators

  • chrisyipw