Configurable Memoized Read-Only

    Define a configurable memoized read-only object property.

    Usage

    var setMemoizedConfigurableReadOnly = require( '@stdlib/utils/define-memoized-configurable-read-only-property' );
    

    setMemoizedConfigurableReadOnly( obj, prop, fcn )

    Defines a configurable memoized read-only object property.

    var obj = {};
    
    function foo() {
        return 'bar';
    }
    
    setMemoizedConfigurableReadOnly( obj, 'foo', foo );
    
    var v = obj.foo;
    // returns 'bar'
    

    The last argument should be a synchronous function whose return value will be memoized and set as the property value.

    Notes

    • A configurable read-only property is enumerable.

    Examples

    var fibonacci = require( '@stdlib/math/base/special/fibonacci' );
    var setMemoizedConfigurableReadOnly = require( '@stdlib/utils/define-memoized-configurable-read-only-property' );
    
    function Foo() {
        var self;
        if ( !(this instanceof Foo) ) {
            return new Foo();
        }
        self = this;
        this.count = 0;
        setMemoizedConfigurableReadOnly( this, 'fibo', fibo );
        return this;
    
        function fibo() {
            self.count += 1;
            return fibonacci( 73 );
        }
    }
    
    var foo = new Foo();
    
    var i;
    for ( i = 0; i < 10; i++ ) {
        console.log( 'F: %d. Count: %d.', foo.fibo, foo.count );
    }