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

Readme

Keywords

Package Sidebar

Install

npm i fast-getter

Weekly Downloads

1

Version

1.0.1

License

MIT

Last publish

Collaborators

  • grncdr