| 15.2.3.14-0-1.js |
---
es5id: 15.2.3.14-0-1
description: Object.keys must exist as a function
--- |
296 |
- |
| 15.2.3.14-0-2.js |
---
es5id: 15.2.3.14-0-2
description: Object.keys must exist as a function taking 1 parameter
--- |
302 |
- |
| 15.2.3.14-1-1.js |
---
es5id: 15.2.3.14-1-1
description: >
Object.keys does not throw TypeError if type of first param is not
Object
--- |
283 |
- |
| 15.2.3.14-1-2.js |
---
es5id: 15.2.3.14-1-2
description: >
Object.keys does not throw TypeError if type of first param is not
Object (boolean)
--- |
296 |
- |
| 15.2.3.14-1-3.js |
---
es5id: 15.2.3.14-1-3
description: >
Object.keys does not throw TypeError if type of first param is not
Object (string)
--- |
296 |
- |
| 15.2.3.14-1-4.js |
---
es5id: 15.2.3.14-1-4
description: >
Object.keys throws TypeError if type of first param is not Object
(null)
--- |
330 |
- |
| 15.2.3.14-1-5.js |
---
es5id: 15.2.3.14-1-5
description: >
Object.keys throws TypeError if type of first param is not Object
(undefined)
--- |
340 |
- |
| 15.2.3.14-2-1.js |
---
es5id: 15.2.3.14-2-1
description: Object.keys returns the standard built-in Array
--- |
347 |
- |
| 15.2.3.14-2-2.js |
---
es5id: 15.2.3.14-2-2
description: Object.keys returns the standard built-in Array (check [[Class]]
--- |
389 |
- |
| 15.2.3.14-2-3.js |
---
es5id: 15.2.3.14-2-3
description: Object.keys returns the standard built-in Array (Array overridden)
--- |
413 |
- |
| 15.2.3.14-2-4.js |
---
es5id: 15.2.3.14-2-4
description: Object.keys returns the standard built-in Array that is extensible
--- |
378 |
- |
| 15.2.3.14-2-5.js |
---
es5id: 15.2.3.14-2-5
description: Object.keys returns the standard built-in Array that is not sealed
--- |
371 |
- |
| 15.2.3.14-2-6.js |
---
es5id: 15.2.3.14-2-6
description: Object.keys returns the standard built-in Array that is not frozen
--- |
371 |
- |
| 15.2.3.14-2-7.js |
---
es5id: 15.2.3.14-2-7
description: >
Object.keys - 'n' is 0 when 'O' doesn't contain own enumerable
data or accessor properties
--- |
602 |
- |
| 15.2.3.14-2-8.js |
---
es5id: 15.2.3.14-2-8
description: >
Object.keys - 'n' is the correct value when enumerable properties
exist in 'O'
--- |
739 |
- |
| 15.2.3.14-3-1.js |
---
es5id: 15.2.3.14-3-1
description: >
Object.keys returns the standard built-in Array containing own
enumerable properties
--- |
449 |
- |
| 15.2.3.14-3-2.js |
---
es5id: 15.2.3.14-3-2
description: >
Object.keys returns the standard built-in Array containing own
enumerable properties (function)
--- |
426 |
- |
| 15.2.3.14-3-3.js |
---
es5id: 15.2.3.14-3-3
description: >
Object.keys returns the standard built-in Array containing own
enumerable properties (array)
--- |
444 |
- |
| 15.2.3.14-3-4.js |
---
es5id: 15.2.3.14-3-4
description: >
Object.keys of an arguments object returns the indices of the
given arguments
--- |
1123 |
- |
| 15.2.3.14-3-5.js |
---
es5id: 15.2.3.14-3-5
description: Object.keys must return a fresh array on each invocation
--- |
528 |
- |
| 15.2.3.14-3-6.js |
---
es5id: 15.2.3.14-3-6
description: >
Object.keys - returns the standard built-in Array (instanceof
Array)
--- |
369 |
- |
| 15.2.3.14-3-7.js |
---
es5id: 15.2.3.14-3-7
description: >
Object.keys - length of the returned array equals the number of
own enumerable properties of 'O'
--- |
637 |
- |
| 15.2.3.14-4-1.js |
---
es5id: 15.2.3.14-4-1
description: Object.keys - elements of the returned array start from index 0
--- |
656 |
- |
| 15.2.3.14-5-1.js |
---
es5id: 15.2.3.14-5-1
description: >
Object.keys - own enumerable data property of 'O' is defined in
returned array
--- |
523 |
- |
| 15.2.3.14-5-2.js |
---
es5id: 15.2.3.14-5-2
description: >
Object.keys - own enumerable accessor property of 'O' is defined
in returned array
--- |
554 |
- |
| 15.2.3.14-5-3.js |
---
es5id: 15.2.3.14-5-3
description: >
Object.keys - non-enumerable own data property of 'O' is not
defined in returned array
--- |
663 |
- |
| 15.2.3.14-5-4.js |
---
es5id: 15.2.3.14-5-4
description: >
Object.keys - non-enumerable own accessor property of 'O' is not
defined in returned array
--- |
755 |
- |
| 15.2.3.14-5-5.js |
---
es5id: 15.2.3.14-5-5
description: >
Object.keys - inherited enumerable data property of 'O' is not
defined in returned array
--- |
604 |
- |
| 15.2.3.14-5-6.js |
---
es5id: 15.2.3.14-5-6
description: >
Object.keys - inherited enumerable accessor property of 'O' is not
defined in returned array
--- |
742 |
- |
| 15.2.3.14-5-7.js |
---
es5id: 15.2.3.14-5-7
description: >
Object.keys - inherted enumerable data property that is
over-ridden by non-enumerable own data property is not defined in
returned array
--- |
719 |
- |
| 15.2.3.14-5-8.js |
---
es5id: 15.2.3.14-5-8
description: >
Object.keys - inherted enumerable data property that is
over-ridden by non-enumerable own accessor property is not defined
in returned array
--- |
730 |
- |
| 15.2.3.14-5-9.js |
---
es5id: 15.2.3.14-5-9
description: >
Object.keys - inherted enumerable accessor property that is
over-ridden by non-enumerable own data property is not defined in
returned array
--- |
730 |
- |
| 15.2.3.14-5-10.js |
---
es5id: 15.2.3.14-5-10
description: >
Object.keys - inherted enumerable accessor property that is
over-ridden by non-enumerable own accessor property is not defined
in returned array
--- |
742 |
- |
| 15.2.3.14-5-11.js |
---
es5id: 15.2.3.14-5-11
description: >
Object.keys - own enumerable indexed data property of dense array
'O' is defined in returned array
--- |
506 |
- |
| 15.2.3.14-5-12.js |
---
es5id: 15.2.3.14-5-12
description: >
Object.keys - own enumerable indexed accessor property of dense
array 'O' is defined in returned array
--- |
681 |
- |
| 15.2.3.14-5-13.js |
---
es5id: 15.2.3.14-5-13
description: >
Object.keys - own enumerable indexed data property of sparse array
'O' is defined in returned array
--- |
833 |
- |
| 15.2.3.14-5-14.js |
---
es5id: 15.2.3.14-5-14
description: >
Object.keys - own enumerable indexed accessor property of sparse
array 'O' is defined in returned array
--- |
664 |
- |
| 15.2.3.14-5-15.js |
---
es5id: 15.2.3.14-5-15
description: >
Object.keys - own enumerable indexed data property of String
object 'O' is defined in returned array
--- |
601 |
- |
| 15.2.3.14-5-16.js |
---
es5id: 15.2.3.14-5-16
description: >
Object.keys - own enumerable indexed accessor property of String
object 'O' is defined in returned array
--- |
718 |
- |
| 15.2.3.14-5-a-1.js |
---
es5id: 15.2.3.14-5-a-1
description: >
Object.keys - 'value' attribute of element in returned array is
correct.
--- |
515 |
- |
| 15.2.3.14-5-a-2.js |
---
es5id: 15.2.3.14-5-a-2
description: >
Object.keys - 'writable' attribute of element of returned array is
correct
--- |
608 |
- |
| 15.2.3.14-5-a-3.js |
---
es5id: 15.2.3.14-5-a-3
description: >
Object.keys - 'enumerable' attribute of element of returned array
is correct
--- |
714 |
- |
| 15.2.3.14-5-a-4.js |
---
es5id: 15.2.3.14-5-a-4
description: >
Object.keys - Verify that 'configurable' attribute of element of
returned array is correct
--- |
644 |
- |
| 15.2.3.14-5-b-1.js |
---
es5id: 15.2.3.14-5-b-1
description: Object.keys - Verify that 'index' of returned array is ascend by 1
--- |
488 |
- |
| 15.2.3.14-6-1.js |
---
es5id: 15.2.3.14-6-1
description: >
Object.keys - the order of elements in returned array is the same
with the order of properties in 'O' (dense array)
--- |
617 |
- |
| 15.2.3.14-6-2.js |
---
es5id: 15.2.3.14-6-2
description: >
Object.keys - the order of elements in returned array is the same
with the order of properties in 'O' (sparse array)
--- |
629 |
- |
| 15.2.3.14-6-3.js |
---
es5id: 15.2.3.14-6-3
description: >
Object.keys - the order of elements in returned array is the same
with the order of properties in 'O' (String object)
--- |
599 |
- |
| 15.2.3.14-6-4.js |
---
es5id: 15.2.3.14-6-4
description: >
Object.keys - the order of elements in returned array is the same
with the order of properties in 'O' (Arguments object)
--- |
663 |
- |
| 15.2.3.14-6-5.js |
---
es5id: 15.2.3.14-6-5
description: >
Object.keys - the order of elements in returned array is the same
with the order of properties in 'O' (any other built-in object)
--- |
643 |
- |
| name.js |
---
es6id: 19.1.2.14
description: >
Object.keys.name is "keys".
info: |
Object.keys ( O )
17 ECMAScript Standard Built-in Objects:
Every built-in Function object, including constructors, that is not
identified as an anonymous function has a name property whose value
is a String.
Unless otherwise specified, the name property of a built-in Function
object, if it exists, has the attributes { [[Writable]]: false,
[[Enumerable]]: false, [[Configurable]]: true }.
includes: [propertyHelper.js]
--- |
785 |
- |
| not-a-constructor.js |
---
esid: sec-ecmascript-standard-built-in-objects
description: >
Object.keys does not implement [[Construct]], is not new-able
info: |
ECMAScript Function Objects
Built-in function objects that are not identified as constructors do not
implement the [[Construct]] internal method unless otherwise specified in
the description of a particular function.
sec-evaluatenew
...
7. If IsConstructor(constructor) is false, throw a TypeError exception.
...
includes: [isConstructor.js]
features: [Reflect.construct, arrow-function]
--- |
846 |
- |
| order-after-define-property-with-function.js |
---
esid: sec-object.keys
description: >
Property names are returned in ascending chronological order of creation
that is unaffected by [[DefineOwnProperty]].
info: |
Object.keys ( O )
[...]
2. Let nameList be ? EnumerableOwnPropertyNames(obj, key).
3. Return CreateArrayFromList(nameList).
EnumerableOwnPropertyNames ( O, kind )
[...]
2. Let ownKeys be ? O.[[OwnPropertyKeys]]().
[...]
OrdinaryOwnPropertyKeys ( O )
[...]
3. For each own property key P of O that is a String but is not an array index,
in ascending chronological order of property creation, do
a. Add P as the last element of keys.
[...]
5. Return keys.
features: [arrow-function]
includes: [compareArray.js]
--- |
998 |
- |
| order-after-define-property.js |
---
esid: sec-object.keys
description: >
Property names are returned in ascending chronological order of creation
that is unaffected by [[DefineOwnProperty]].
info: |
Object.keys ( O )
[...]
2. Let nameList be ? EnumerableOwnPropertyNames(obj, key).
3. Return CreateArrayFromList(nameList).
EnumerableOwnPropertyNames ( O, kind )
[...]
2. Let ownKeys be ? O.[[OwnPropertyKeys]]().
[...]
OrdinaryOwnPropertyKeys ( O )
[...]
3. For each own property key P of O that is a String but is not an array index,
in ascending chronological order of property creation, do
a. Add P as the last element of keys.
[...]
5. Return keys.
includes: [compareArray.js]
--- |
1081 |
- |
| property-traps-order-with-proxied-array.js |
---
esid: sec-object.keys
description: >
Ensure the correct property traps are called on a proxy of an array.
info: |
19.1.2.16 Object.keys ( O )
...
2. Let nameList be ? EnumerableOwnPropertyNames(obj, "key").
...
7.3.21 EnumerableOwnPropertyNames ( O, kind )
...
2. Let ownKeys be ? O.[[OwnPropertyKeys]]().
...
4. For each element key of ownKeys in List order, do
a. If Type(key) is String, then
i. Let desc be ? O.[[GetOwnProperty]](key).
...
features: [Proxy]
includes: [compareArray.js]
--- |
859 |
- |
| proxy-keys.js |
---
esid: sec-object.keys
description: >
Object.keys() observably performs [[GetOwnProperty]]
info: |
19.1.2.16 Object.keys ( O )
1. Let obj be ? ToObject(O).
2. Let nameList be ? EnumerableOwnProperties(obj, "key").
...
7.3.21 EnumerableOwnProperties ( O, kind )
1. Assert: Type(O) is Object.
2. Let ownKeys be ? O.[[OwnPropertyKeys]]().
3. Let properties be a new empty List.
4. For each element key of ownKeys in List order, do
a. If Type(key) is String, then
i. Let desc be ? O.[[GetOwnProperty]](key).
...
features: [Symbol]
--- |
3876 |
- |
| proxy-non-enumerable-prop-invariant-1.js |
---
esid: sec-object.keys
description: >
Proxy [[OwnPropertyKeys]] trap does not skip non-enumerable keys when validating invariant:
The result List must contain the keys of all non-configurable own properties of
the target object.
info: |
Object.keys ( O )
...
2. Let nameList be ? EnumerableOwnPropertyNames(obj, "key").
EnumerableOwnPropertyNames ( O, kind )
...
2. Let ownKeys be ? O.[[OwnPropertyKeys]]().
[[OwnPropertyKeys]] ( )
...
11. Let targetKeys be ? target.[[OwnPropertyKeys]]().
...
15. Let targetNonconfigurableKeys be a new empty List.
16. For each element key of targetKeys, do
a. Let desc be ? target.[[GetOwnProperty]](key).
b. If desc is not undefined and desc.[[Configurable]] is false, then
i. Append key as an element of targetNonconfigurableKeys.
...
18. Let uncheckedResultKeys be a new List which is a copy of trapResult.
19. For each key that is an element of targetNonconfigurableKeys, do
a. If key is not an element of uncheckedResultKeys, throw a TypeError exception.
features: [Proxy]
--- |
1500 |
- |
| proxy-non-enumerable-prop-invariant-2.js |
---
esid: sec-object.keys
description: >
Proxy [[OwnPropertyKeys]] trap does not skip non-enumerable keys when validating invariant:
If the target object is not extensible, then the result List must contain all the keys of
the own properties of the target object and no other values.
info: |
Object.keys ( O )
...
2. Let nameList be ? EnumerableOwnPropertyNames(obj, "key").
EnumerableOwnPropertyNames ( O, kind )
...
2. Let ownKeys be ? O.[[OwnPropertyKeys]]().
[[OwnPropertyKeys]] ( )
...
11. Let targetKeys be ? target.[[OwnPropertyKeys]]().
16. For each element key of targetKeys, do
a. Let desc be ? target.[[GetOwnProperty]](key).
b. If desc is not undefined and desc.[[Configurable]] is false, then
...
c. Else,
i. Append key as an element of targetConfigurableKeys.
...
18. Let uncheckedResultKeys be a new List which is a copy of trapResult.
...
21. For each key that is an element of targetConfigurableKeys, do
a. If key is not an element of uncheckedResultKeys, throw a TypeError exception.
features: [Proxy]
--- |
1546 |
- |
| proxy-non-enumerable-prop-invariant-3.js |
---
esid: sec-object.keys
description: >
Proxy [[OwnPropertyKeys]] trap does not skip non-enumerable keys when validating invariant:
If the target object is not extensible, then the result List must contain all the keys of
the own properties of the target object and no other values.
info: |
Object.keys ( O )
...
2. Let nameList be ? EnumerableOwnPropertyNames(obj, "key").
EnumerableOwnPropertyNames ( O, kind )
...
2. Let ownKeys be ? O.[[OwnPropertyKeys]]().
[[OwnPropertyKeys]] ( )
...
11. Let targetKeys be ? target.[[OwnPropertyKeys]]().
16. For each element key of targetKeys, do
a. Let desc be ? target.[[GetOwnProperty]](key).
b. If desc is not undefined and desc.[[Configurable]] is false, then
...
c. Else,
i. Append key as an element of targetConfigurableKeys.
...
18. Let uncheckedResultKeys be a new List which is a copy of trapResult.
...
22. If uncheckedResultKeys is not empty, throw a TypeError exception.
features: [Proxy]
--- |
1472 |
- |
| return-order.js |
---
esid: sec-object.keys
description: Object.keys enumeration order
features: [for-in-order]
includes: [compareArray.js]
--- |
517 |
- |