diff --git a/lib/jsdom/level2/style.js b/lib/jsdom/level2/style.js
index <HASH>..<HASH> 100644
--- a/lib/jsdom/level2/style.js
+++ b/lib/jsdom/level2/style.js
@@ -62,7 +62,7 @@ module.exports = core => {
   StyleSheetList.prototype.__proto__ = Array.prototype;
 
   StyleSheetList.prototype.item = function item(i) {
-    return this[i];
+    return Object.prototype.hasOwnProperty.call(this, i) ? this[i] : null;
   };
 
   core.StyleSheetList = StyleSheetList;
diff --git a/test/level2/style.js b/test/level2/style.js
index <HASH>..<HASH> 100644
--- a/test/level2/style.js
+++ b/test/level2/style.js
@@ -475,6 +475,13 @@ exports.tests = {
     t.done();
   },
 
+  "StyleSheetList.prototype.item returns null on index out of bounds": t => {
+    const document = jsdom.jsdom();
+    t.strictEqual(document.styleSheets[0], undefined);
+    t.strictEqual(document.styleSheets.item(0), null);
+    t.done();
+  },
+
   "setting background to null works correctly (GH-1499)": t => {
     const document = jsdom.jsdom();
     document.body.innerHTML = `<div id="ctrl" style="background:#111;border:1px"></div>`;
Make StyleSheetList.prototype.item correctly return null when appropriate

Per spec, "If there is no indexth object in the collection, then the method must return null."