array-fill.js 1017 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. define([], function() {
  2. if (!Array.prototype.fill) {
  3. Object.defineProperty(Array.prototype, 'fill', {
  4. value: function (value) {
  5. // Steps 1-2.
  6. if (this == null) {
  7. throw new TypeError('this is null or not defined');
  8. }
  9. var O = Object(this);
  10. // Steps 3-5.
  11. var len = O.length >>> 0;
  12. // Steps 6-7.
  13. var start = arguments[1];
  14. var relativeStart = start >> 0;
  15. // Step 8.
  16. var k = relativeStart < 0 ?
  17. Math.max(len + relativeStart, 0) :
  18. Math.min(relativeStart, len);
  19. // Steps 9-10.
  20. var end = arguments[2];
  21. var relativeEnd = end === undefined ?
  22. len : end >> 0;
  23. // Step 11.
  24. var final = relativeEnd < 0 ?
  25. Math.max(len + relativeEnd, 0) :
  26. Math.min(relativeEnd, len);
  27. // Step 12.
  28. while (k < final) {
  29. O[k] = value;
  30. k++;
  31. }
  32. // Step 13.
  33. return O;
  34. }
  35. });
  36. }
  37. })