|
Last change
on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago |
|
Fix frontend appearance
|
-
Property mode
set to
100644
|
|
File size:
1.3 KB
|
| Line | |
|---|
| 1 | 'use strict';
|
|---|
| 2 | var $ = require('../internals/export');
|
|---|
| 3 | var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|---|
| 4 | var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
|
|---|
| 5 | var toIndexedObject = require('../internals/to-indexed-object');
|
|---|
| 6 | var createProperty = require('../internals/create-property');
|
|---|
| 7 |
|
|---|
| 8 | var $Array = Array;
|
|---|
| 9 | var $RangeError = RangeError;
|
|---|
| 10 |
|
|---|
| 11 | // Firefox bug
|
|---|
| 12 | var INCORRECT_EXCEPTION_ON_COERCION_FAIL = (function () {
|
|---|
| 13 | try {
|
|---|
| 14 | // eslint-disable-next-line es/no-array-prototype-with, no-throw-literal -- needed for testing
|
|---|
| 15 | []['with']({ valueOf: function () { throw 4; } }, null);
|
|---|
| 16 | } catch (error) {
|
|---|
| 17 | return error !== 4;
|
|---|
| 18 | }
|
|---|
| 19 | })();
|
|---|
| 20 |
|
|---|
| 21 | // `Array.prototype.with` method
|
|---|
| 22 | // https://tc39.es/ecma262/#sec-array.prototype.with
|
|---|
| 23 | $({ target: 'Array', proto: true, forced: INCORRECT_EXCEPTION_ON_COERCION_FAIL }, {
|
|---|
| 24 | 'with': function (index, value) {
|
|---|
| 25 | var O = toIndexedObject(this);
|
|---|
| 26 | var len = lengthOfArrayLike(O);
|
|---|
| 27 | var relativeIndex = toIntegerOrInfinity(index);
|
|---|
| 28 | var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;
|
|---|
| 29 | if (actualIndex >= len || actualIndex < 0) throw new $RangeError('Incorrect index');
|
|---|
| 30 | var A = new $Array(len);
|
|---|
| 31 | var k = 0;
|
|---|
| 32 | for (; k < len; k++) createProperty(A, k, k === actualIndex ? value : O[k]);
|
|---|
| 33 | return A;
|
|---|
| 34 | }
|
|---|
| 35 | });
|
|---|
Note:
See
TracBrowser
for help on using the repository browser.