diff --git a/lib/utils.js b/lib/utils.js index 77d84e8..6a02a0b 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -217,7 +217,7 @@ function forEach(obj, fn) { } else { // Iterate over object keys for (var key in obj) { - if (obj.hasOwnProperty(key)) { + if (Object.hasOwnProperty.call(obj, key)) { fn.call(null, obj[key], key, obj); } } diff --git a/test/specs/utils/forEach.spec.js b/test/specs/utils/forEach.spec.js index f2de97a..148fd68 100644 --- a/test/specs/utils/forEach.spec.js +++ b/test/specs/utils/forEach.spec.js @@ -48,4 +48,16 @@ describe('utils::forEach', function () { expect(count).toEqual(1); }); + + it('should handle non object prototype gracefully', function () { + var count = 0; + var data = Object.create(null); + data.foo = 'bar' + + forEach(function () {}, function () { + count++; + }); + + expect(count).toEqual(1); + }); });