20 lines
		
	
	
		
			404 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			20 lines
		
	
	
		
			404 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| module.exports = (object, propertyName, fn) => {
 | |
| 	const define = value => Object.defineProperty(object, propertyName, {value, enumerable: true, writable: true});
 | |
| 
 | |
| 	Object.defineProperty(object, propertyName, {
 | |
| 		configurable: true,
 | |
| 		enumerable: true,
 | |
| 		get() {
 | |
| 			const result = fn();
 | |
| 			define(result);
 | |
| 			return result;
 | |
| 		},
 | |
| 		set(value) {
 | |
| 			define(value);
 | |
| 		}
 | |
| 	});
 | |
| 
 | |
| 	return object;
 | |
| };
 |