# Memoized Read-Only > [Define][mdn-define-property] a memoized **read-only** object property.
## Usage ```javascript var setMemoizedReadOnly = require( '@stdlib/utils/define-memoized-read-only-property' ); ``` #### setMemoizedReadOnly( obj, prop, fcn ) [Defines][mdn-define-property] a memoized **read-only** object property. ```javascript var obj = {}; function foo() { return 'bar'; } setMemoizedReadOnly( 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 **read-only** property is **enumerable** and **non-configurable**; however, until deferred evaluation, an object property is **configurable**.
## Examples ```javascript var fibonacci = require( '@stdlib/math/base/special/fibonacci' ); var setMemoizedReadOnly = require( '@stdlib/utils/define-memoized-read-only-property' ); function Foo() { var self; if ( !(this instanceof Foo) ) { return new Foo(); } self = this; this.count = 0; setMemoizedReadOnly( 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 ); } ```