1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 'use strict'; module.exports = ( obj, prop, fn ) => { const define = value => Object.defineProperty( obj, prop, { value, enumerable: true, writable: true } ); Object.defineProperty( obj, prop, { configurable: true, enumerable: true, get() { const ret = fn(); define( ret ); return ret; }, set( val ) { define( val ); } } ); return obj; }; |