1/** 2 * Source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fill#Polyfill 3 */ 4if (!Array.prototype.fill) { 5 Object.defineProperty(Array.prototype, 'fill', { 6 value: function(value) { 7 8 // Steps 1-2. 9 if (this == null) { 10 throw new TypeError('this is null or not defined'); 11 } 12 13 var O = Object(this); 14 15 // Steps 3-5. 16 var len = O.length >>> 0; 17 18 // Steps 6-7. 19 var start = arguments[1]; 20 var relativeStart = start >> 0; 21 22 // Step 8. 23 var k = relativeStart < 0 ? 24 Math.max(len + relativeStart, 0) : 25 Math.min(relativeStart, len); 26 27 // Steps 9-10. 28 var end = arguments[2]; 29 var relativeEnd = end === undefined ? 30 len : end >> 0; 31 32 // Step 11. 33 var final = relativeEnd < 0 ? 34 Math.max(len + relativeEnd, 0) : 35 Math.min(relativeEnd, len); 36 37 // Step 12. 38 while (k < final) { 39 O[k] = value; 40 k++; 41 } 42 43 // Step 13. 44 return O; 45 } 46 }); 47} 48