properties-and-events

1.2.0 • Public • Published

properties-and-events

Add properties and events with fluent api calls to your objects.


import { addProperties, addGetters, addEvents } from 'properties-and-events'

class Car {
  constructor () {
    addProperties(this, 'colour', 'upholstery', 'sunroof')
    addGetters(this, 'doors', 'engineSize')
    addEvents(this, 'start', 'stop')
    this._doors = 4
    this._engineSize = 1.98
  }

  drive (time) {
    this.fire('start')
    setTimeout(() => {
      this.fire('stop')
    }, time)
  }
}

const myCar = new Car()
  .colour('red')
  .upholstery('leather')
  .sunroof(false)
  .on('start', () => {console.log('car started')})
  .on('stop', () => {console.log('car stopped')})

console.log(myCar.doors()) // logs 4
console.log(myCar.colour()) // logs 'red'
console.log(myCar._colour) // also logs 'red'

addProperties adds fluent getter/setter methods to your object. If the method is called with an argument, then it is treated as a setter, and returns a reference to the original object to allow method chaining. If called without any argument then it is treated as a getter and will return the value of the property. The actual value of the property is stored in a field with the name of the method prefixed with an underscore. i.e. o.colour() gets the value stored in o._colour.

addGetters works similarly to addProperties but without the setter functionality.

addEvents adds events to your object. Two methods will be added to your object. myObject.on(type, handler) is used to subscribe to events. Internally, use this.fire(type, arg1, arg2, ...) to fire events. arg1, arg2, ... will be passed to the handler.

Readme

Keywords

none

Package Sidebar

Install

npm i properties-and-events

Weekly Downloads

2

Version

1.2.0

License

MIT

Unpacked Size

15.6 kB

Total Files

12

Last publish

Collaborators

  • lukebarlow