@kingjs/property-descriptor.lambdize
v1.0.2
Published
Wraps strings found in a descriptor's `value`, `get` or `set` into an appropriate corresponding lambda functions.
Downloads
10
Readme
@kingjs/property-descriptor.lambdize
Wraps strings found in a descriptor's value
, get
or set
into an appropriate corresponding lambda functions.
Usage
var assert = require('assert');
var lambdize = require('@kingjs/property-descriptor.lambdize');
// create a lambda function that simply returns zero
var fooDescriptor = lambdize.call({ value: '0' }, 'foo');
assert(fooDescriptor.value.name = 'foo');
var target = Object.defineProperty({ }, 'foo', fooDescriptor);
assert(target.foo() == 0);
// create lambda accessors that simply access a property `field`
var barDescriptor = lambdize.call({
get: 'this.field',
set: 'this.field = value'
}, 'bar');
assert(barDescriptor.get.name = 'bar');
assert(barDescriptor.set.name = 'bar');
var target = Object.defineProperty({ field: 1 }, 'bar', barDescriptor);
assert(target.bar == 1);
target.bar = 2;
assert(target.field == 2);
API
lambdize(this[, name])
Parameters
this
: The descriptor whosevalue
,get
orset
property, if strings, will be replaced with appropriate corresponding lambda functions. Onlyset
has arguments, a single parameter namedvalue
.name
: The name to assign any freshly created lambda functions.
Returns
Returns this
after it's strings are replaced with lambda functions.
Remarks
A normal lambda uses the this
from the surrounding lexical scope. These pseduo-lambda's use the this
supplied at runtime.
Install
With npm installed, run
$ npm install @kingjs/property-descriptor.lambdize
Source
https://repository.kingjs.net/property-descriptor/lambdize
License
MIT