diff --git a/lib/weak.js b/lib/weak.js index 115a4fe..c6a5447 100644 --- a/lib/weak.js +++ b/lib/weak.js @@ -32,9 +32,8 @@ module.exports = function (memoize) { if (options.resolvers) resolve = resolveResolve(options.resolvers); if (options.normalizer) normalizer = resolveNormalize(options.normalizer); - if ((length === 1) && !normalizer && !(options.async && extensions.async) && - !(options.dispose && extensions.dispose) && !(options.maxAge && extensions.maxAge) && - !(options.max && extensions.max) && !(options.refCounter && extensions.refCounter)) { + if ((length === 1) && !normalizer && !options.async && !options.dispose && !options.maxAge && + !options.max && !options.refCounter) { return defineProperties(function (obj) { var result, args = arguments; if (resolve) args = resolve(args); @@ -85,7 +84,7 @@ module.exports = function (memoize) { memoizer.delete.apply(this, slice.call(args, 1)); }, length)) }); - if (!options.refCounter || !extensions.refCounter) return memoized; + if (!options.refCounter) return memoized; defineProperties(memoized, { deleteRef: d(defineLength(function (obj) { var memoizer, args = arguments; diff --git a/test/weak.js b/test/weak.js index b76b797..4ab24c3 100644 --- a/test/weak.js +++ b/test/weak.js @@ -1,6 +1,6 @@ 'use strict'; -module.exports = function (t, a) { +module.exports = function (t, a, d) { var value = [], obj = {}, memoized, count = 0, x, y, z; memoized = t(function (arg, x, y) { a(arg, obj); return x + y; }, { refCounter: true, dispose: function (val) { value.push(val); } }); @@ -30,4 +30,14 @@ module.exports = function (t, a) { a(memoized(x), 1); a(memoized(z), 3); a(count, 3); + + count = 0; + memoized = t(function (arg) { return ++count; }, { maxAge: 1 }); + + memoized(obj); + setTimeout(function () { + memoized(obj); + a(count, 2); + d(); + }, 100); };