diff options
-rw-r--r-- | lib/memoize.js | 4 | ||||
-rwxr-xr-x | test/test-async.js | 8 |
2 files changed, 10 insertions, 2 deletions
diff --git a/lib/memoize.js b/lib/memoize.js index 963e031..30b989c 100644 --- a/lib/memoize.js +++ b/lib/memoize.js @@ -7,8 +7,8 @@ import has from 'lodash/has'; import setImmediate from './internal/setImmediate'; export default function memoize(fn, hasher) { - var memo = {}; - var queues = {}; + var memo = Object.create(null); + var queues = Object.create(null); hasher = hasher || identity; var memoized = rest(function memoized(args) { var callback = args.pop(); diff --git a/test/test-async.js b/test/test-async.js index 2b26b51..e27dd33 100755 --- a/test/test-async.js +++ b/test/test-async.js @@ -4296,6 +4296,14 @@ exports['memoize'] = { }, 'avoid __proto__ key return undefined': function (test) { + // Skip test if there is a Object.create bug (node 0.10 and some Chrome 30x versions) + var x = Object.create(null); + /* jshint proto: true */ + x.__proto__ = 'foo'; + if (x.__proto__ !== 'foo') { + return test.done(); + } + test.expect(1); var fn = async.memoize(function(name, callback) { setTimeout(function(){ |