1"use strict" 2 3function addLazyProperty(object, name, initializer, enumerable) { 4 Object.defineProperty(object, name, { 5 get: function() { 6 var v = initializer.call(this) 7 Object.defineProperty(this, name, { value: v, enumerable: !!enumerable, writable: true }) 8 return v 9 }, 10 set: function(v) { 11 Object.defineProperty(this, name, { value: v, enumerable: !!enumerable, writable: true }) 12 return v 13 }, 14 enumerable: !!enumerable, 15 configurable: true 16 }) 17} 18 19module.exports = addLazyProperty 20