Skip to content

Commit 6b116d1

Browse files
authored
update spec and polyfill code
1 parent e0cf03d commit 6b116d1

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

README.md

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ When the GetLastArrayItem method is called, the following steps are taken:
3434
If len is zero, then
3535
Return undefined.
3636
Else len > 0,
37-
Let newLen be len-1.
38-
Let index be ! ToString(newLen).
37+
Set len to len-1.
38+
Let index be ! ToString(len).
3939
Let element be ? Get(O, index).
4040
Return element.
4141
@@ -48,7 +48,7 @@ When the SetLastArrayItem method is called, the following steps are taken:
4848
Let O be ? ToObject(this value).
4949
Let len be ? ToLength(? Get(O, "length")).
5050
If len > 0, then
51-
Set len to len-1
51+
Set len to len-1.
5252
Let index be ! ToString(len).
5353
Return ? Set(O, index, value).
5454
@@ -61,29 +61,30 @@ The SetLastArrayItem function is intentionally generic; it does not require that
6161

6262

6363
```js
64+
import { ToString, ToObject, ToLength } from 'es-abstract'
6465
// This polyfill tries to stick as close to the spec as possible. There are polyfills which could use less code.
6566
Object.defineProperty(Array.prototype, 'end', {
6667
enumerable: false,
6768
configurable: false,
6869
get() {
69-
let O = Object(this)
70-
let len = Math.min(Math.max(0, Math.floor(Math.abs(O.length))), Number.MAX_SAFE_INTEGER)
70+
let O = ToObject(this)
71+
let len = ToLength(O.length)
7172
if (len === 0) {
7273
return undefined
7374
} else if (len > 0) {
74-
let newLen = len -1
75-
let index = String(newLen)
75+
len = len -1
76+
let index = ToString(len)
7677
let element = O[index]
7778
return element
7879
}
7980
},
8081
set(value) {
81-
let O = Object(this)
82-
let len = Math.min(Math.max(0, Math.floor(Math.abs(O.length))), Number.MAX_SAFE_INTEGER)
82+
let O = ToObject(this)
83+
let len = ToLength(O.length)
8384
if (len > 0) {
8485
len = len -1
8586
}
86-
let index = String(newLen)
87+
let index = ToString(len)
8788
return O[index] = value
8889
},
8990
})

0 commit comments

Comments
 (0)