Namely, Pickled Meatballs

    fast-getter

    1.0.1 • Public • Published

    fast-getter

    browser support

    Shorthand for efficient, lazy, self-replacing getter.

    Synopsis & Test

    var getter = require('./');
     
    var events = [];
     
    function Owner () {
      events.push('Created owner');
    }
     
    function ThingThatIsntAlwaysUsed (owner) {
      events.push('Created child');
      this.owner = owner;
    }
     
    getter(Owner.prototype, 'ownee', function () {
      events.push('getter was triggered');
      return new ThingThatIsntAlwaysUsed(this);
    });
     
    var owner = new Owner();
    var ownee = owner.ownee;

    This synopsis is also run as a test using markdown-code-blocks:

    var assert = require('assert');
    assert.equal(ownee, owner.ownee);
     
    events.push('getter was only run once');
     
    assert.deepEqual(events.splice(0, events.length), [
      'Created owner',
      'getter was triggered',
      'Created child',
      'getter was only run once',
    ]);

    You can also assign to the property, in which case the getter never runs:

    var owner = new Owner();
    owner.ownee = 'some string';
     
    assert.equal(owner.ownee, 'some string');
    assert.deepEqual(events, [ 'Created owner' ]);
     
    console.log('Everything works');

    API

    module.exports = (object, name, [enumerable=false], get) -> void

    Defines a configurable property on object. The get function will be called in the same context as any other ES5 getter, but only once per unique object that the property is accessed on.

    If enumerable is true then the property name will be made enumerable, this defaults to false.

    License

    MIT

    Install

    npm i fast-getter

    DownloadsWeekly Downloads

    3

    Version

    1.0.1

    License

    MIT

    Last publish

    Collaborators

    • grncdr