new cache using Object.defineProperty