loud-accessors

0.0.1 • Public • Published

LoudAccessors - JavaScript event emitting attribute accessors

LoudAccessors is a super tiny JavaScript constructor (CoffeeScript class) implementing event emitting getter and setter. It is intended to be used as a micromodule or as a base class to build upon.

It mixes in the eventspitter event micromodule and provides two additional instance methods:

  • get( attr_name ) gets the value of an attribute and emits the read:attr_name event (where attr_name is the name of the attribute that was read)
  • set( attr_name, attr_value ) sets the value of an attribute, and triggers the change:attr_name event

Additionally, it provides a class method:

  • attrAccessor( attr_name, [attr2_name], [...] ) on environment supporting Object.defineProperty it defines getter and setter for the attribute(s), so that accessing it directly triggers the events.

Example (CoffeeScript)

class Person extends LoudAccessors
  constructor: ( name ) ->
    @set "name"name
 
john = new Person "John"
 
john.get "name"                      # => returns "John" and triggers "read:name" 
john.set "name""Johnny"            # => sets name to "Johnny" and triggers "change:name" 
john.set "name""Joe"silent: true # => sets name to "Joe" without triggering events 
 
# Or, where Object.defineProperty is supported: 
 
class Person extends LoudAccessors
  @attrAccessor "name"
 
john.name            # => returns "John" and triggers "read:name" 
john.name = "Johnny" # => sets name to "Johnny" and triggers "change:name" 

/loud-accessors/

    Package Sidebar

    Install

    npm i loud-accessors

    Weekly Downloads

    4

    Version

    0.0.1

    License

    MIT

    Last publish

    Collaborators

    • lucaong