Name Description Size Coverage
browser.js 0 -
builtin.js --- esid: sec-json.stringify description: > Tests that JSON.stringify meets the requirements for built-in objects defined by the introduction of chapter 17 of the ECMAScript Language Specification. features: [Reflect.construct] --- 985 -
length.js --- esid: sec-json.stringify description: > JSON.stringify.length is 3. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) The "length" property of the stringify function is 3. ECMAScript Standard Built-in Objects Unless otherwise specified, the length property of a built-in Function object has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true }. includes: [propertyHelper.js] --- 725 -
name.js --- esid: sec-json.stringify description: > JSON.stringify.name is "stringify". info: | JSON.stringify ( value [ , replacer [ , space ] ] ) 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] --- 865 -
not-a-constructor.js --- esid: sec-ecmascript-standard-built-in-objects description: > JSON.stringify 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] --- 880 -
prop-desc.js --- esid: sec-json.stringify description: > Property descriptor of JSON.stringify. info: | ECMAScript Standard Built-in Objects Every other data property described in clauses 18 through 26 and in Annex B.2 has the attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true } unless otherwise specified. includes: [propertyHelper.js] --- 630 -
property-order.js --- esid: sec-serializejsonobject description: JSON.stringify property enumeration order features: [for-in-order] --- 797 -
replacer-array-abrupt.js --- esid: sec-json.stringify description: > Abrupt completion from Get. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 4. If Type(replacer) is Object, then [...] 2. Let len be ? LengthOfArrayLike(replacer). 3. Let k be 0. 4. Repeat, while k < len, a. Let v be ? Get(replacer, ! ToString(k)). features: [Proxy] --- 1281 -
replacer-array-duplicates.js --- esid: sec-json.stringify description: > Replacer array is deduped before Get. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 4. If Type(replacer) is Object, then [...] 4. Repeat, while k < len, a. Let v be ? Get(replacer, ! ToString(k)). [...] f. If item is not undefined and item is not currently an element of PropertyList, then i. Append item to the end of PropertyList. --- 797 -
replacer-array-empty.js --- esid: sec-serializejsonobject description: > Objects are serialized to {} if replacer array is empty. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 10. If Type(value) is Object and IsCallable(value) is false, then [...] c. Return ? SerializeJSONObject(value). SerializeJSONObject ( value ) [...] 5. If PropertyList is not undefined, then a. Let K be PropertyList. --- 896 -
replacer-array-number-object.js --- esid: sec-json.stringify description: > Converts Number objects from replacer array to primitives using ToString. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 4. If Type(replacer) is Object, then [...] 4. Repeat, while k < len, a. Let v be ? Get(replacer, ! ToString(k)). [...] e. Else if Type(v) is Object, then i. If v has a [[StringData]] or [[NumberData]] internal slot, set item to ? ToString(v). --- 917 -
replacer-array-number.js --- esid: sec-json.stringify description: > Converts number primitives from replacer array to strings. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 4. If Type(replacer) is Object, then [...] 4. Repeat, while k < len, a. Let v be ? Get(replacer, ! ToString(k)). [...] d. Else if Type(v) is Number, set item to ! ToString(v). --- 772 -
replacer-array-order.js --- esid: sec-serializejsonobject description: > Keys order of serialized objects is determined by replacer array. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 10. If Type(value) is Object and IsCallable(value) is false, then [...] c. Return ? SerializeJSONObject(value). SerializeJSONObject ( value ) [...] 5. If PropertyList is not undefined, then a. Let K be PropertyList. --- 922 -
replacer-array-proxy-revoked-realm.js --- esid: sec-json.stringify description: > Revoked proxy of array as replacer produces a TypeError (honoring the realm of the current execution context). info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 4. If Type(replacer) is Object, then a. If IsCallable(replacer) is true, then i. Let ReplacerFunction be replacer. b. Else, i. Let isArray be ? IsArray(replacer). IsArray ( argument ) [...] 3. If argument is a Proxy exotic object, then a. If argument.[[ProxyHandler]] is null, throw a TypeError exception. b. Let target be argument.[[ProxyTarget]]. c. Return ? IsArray(target). features: [cross-realm, Proxy] --- 1034 -
replacer-array-proxy-revoked.js --- esid: sec-json.stringify description: Revoked proxy value produces a TypeError. info: | [...] 4. If Type(replacer) is Object, then a. If IsCallable(replacer) is true, then i. Let ReplacerFunction be replacer. b. Else, i. Let isArray be ? IsArray(replacer). 7.2.2 IsArray [...] 3. If argument is a Proxy exotic object, then a. If the value of the [[ProxyHandler]] internal slot of argument is null, throw a TypeError exception. b. Let target be the value of the [[ProxyTarget]] internal slot of argument. c. Return ? IsArray(target). features: [Proxy] --- 928 -
replacer-array-proxy.js --- esid: sec-json.stringify description: > Array proxy replacer serves as a filter of object keys. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 4. If Type(replacer) is Object, then a. If IsCallable(replacer) is true, then i. Let ReplacerFunction be replacer. b. Else, i. Let isArray be ? IsArray(replacer). IsArray ( argument ) [...] 3. If argument is a Proxy exotic object, then a. If argument.[[ProxyHandler]] is null, throw a TypeError exception. b. Let target be argument.[[ProxyTarget]]. c. Return ? IsArray(target). features: [Proxy] --- 969 -
replacer-array-string-object.js --- esid: sec-json.stringify description: > Converts String objects from replacer array to primitives using ToString. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 4. If Type(replacer) is Object, then [...] 4. Repeat, while k < len, a. Let v be ? Get(replacer, ! ToString(k)). [...] e. Else if Type(v) is Object, then i. If v has a [[StringData]] or [[NumberData]] internal slot, set item to ? ToString(v). --- 921 -
replacer-array-undefined.js --- esid: sec-json.stringify description: > Undefined values in replacer array are ignored. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 4. If Type(replacer) is Object, then [...] 4. Repeat, while k < len, a. Let v be ? Get(replacer, ! ToString(k)). [...] f. If item is not undefined and item is not currently an element of PropertyList, then i. Append item to the end of PropertyList. --- 885 -
replacer-array-wrong-type.js --- esid: sec-json.stringify description: > Values that are neither strings nor numbers are ignored. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 4. If Type(replacer) is Object, then [...] 4. Repeat, while k < len, a. Let v be ? Get(replacer, ! ToString(k)). [...] f. If item is not undefined and item is not currently an element of PropertyList, then i. Append item to the end of PropertyList. features: [Proxy, Symbol] --- 943 -
replacer-function-abrupt.js --- esid: sec-serializejsonproperty description: > Abrupt completion from Call. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 4. If Type(replacer) is Object, then a. If IsCallable(replacer) is true, then i. Let ReplacerFunction be replacer. [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 3. If ReplacerFunction is not undefined, then a. Set value to ? Call(ReplacerFunction, holder, « key, value »). --- 800 -
replacer-function-arguments.js --- esid: sec-serializejsonproperty description: > Replacer function is called with correct context and arguments. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) 1. Let value be ? Get(holder, key). [...] 3. If ReplacerFunction is not undefined, then a. Set value to ? Call(ReplacerFunction, holder, « key, value »). includes: [compareArray.js] --- 1400 -
replacer-function-array-circular.js --- esid: sec-serializejsonarray description: > Circular array value (returned from replacer function) throws a TypeError. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 3. If ReplacerFunction is not undefined, then a. Set value to ? Call(ReplacerFunction, holder, « key, value »). [...] 10. If Type(value) is Object and IsCallable(value) is false, then a. Let isArray be ? IsArray(value). b. If isArray is true, return ? SerializeJSONArray(value). SerializeJSONArray ( value ) 1. If stack contains value, throw a TypeError exception because the structure is cyclical. --- 1070 -
replacer-function-object-circular.js --- esid: sec-serializejsonobject description: > Circular object value (returned from replacer function) throws a TypeError. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 3. If ReplacerFunction is not undefined, then a. Set value to ? Call(ReplacerFunction, holder, « key, value »). [...] 10. If Type(value) is Object and IsCallable(value) is false, then [...] c. Return ? SerializeJSONObject(value). SerializeJSONObject ( value ) 1. If stack contains value, throw a TypeError exception because the structure is cyclical. --- 1255 -
replacer-function-object-deleted-property.js --- esid: sec-serializejsonproperty description: > Replacer function is called on properties, deleted during stringification. info: | SerializeJSONObject ( value ) [...] 5. If PropertyList is not undefined, then [...] 6. Else, a. Let K be ? EnumerableOwnPropertyNames(value, key). [...] 8. For each element P of K, do a. Let strP be ? SerializeJSONProperty(P, value). [...] SerializeJSONProperty ( key, holder ) 1. Let value be ? Get(holder, key). [...] 3. If ReplacerFunction is not undefined, then a. Set value to ? Call(ReplacerFunction, holder, « key, value »). --- 1080 -
replacer-function-result-undefined.js --- esid: sec-serializejsonproperty description: > Result of replacer function is stringified. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 3. If ReplacerFunction is not undefined, then a. Set value to ? Call(ReplacerFunction, holder, « key, value »). --- 1068 -
replacer-function-result.js --- esid: sec-serializejsonproperty description: > Result of replacer function is stringified. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 3. If ReplacerFunction is not undefined, then a. Set value to ? Call(ReplacerFunction, holder, « key, value »). --- 1192 -
replacer-function-tojson.js --- esid: sec-serializejsonproperty description: > Replacer function is called on result of toJSON method. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 4. If Type(replacer) is Object, then a. If IsCallable(replacer) is true, then i. Let ReplacerFunction be replacer. [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 2. If Type(value) is Object, then a. Let toJSON be ? Get(value, "toJSON"). b. If IsCallable(toJSON) is true, then i. Set value to ? Call(toJSON, value, « key »). 3. If ReplacerFunction is not undefined, then a. Set value to ? Call(ReplacerFunction, holder, « key, value »). --- 1339 -
replacer-function-wrapper.js --- esid: sec-json.stringify description: > Wrapper is plain extensible object with single data property. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 9. Let wrapper be ObjectCreate(%ObjectPrototype%). 10. Let status be CreateDataProperty(wrapper, the empty String, value). includes: [propertyHelper.js] --- 1048 -
replacer-wrong-type.js --- esid: sec-json.stringify description: > Replacer paramter of wrong type is silently ignored. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 4. If Type(replacer) is Object, then a. If IsCallable(replacer) is true, then i. Set ReplacerFunction to replacer. b. Else, i. Let isArray be ? IsArray(replacer). ii. If isArray is true, then 1. Set PropertyList to a new empty List. features: [Symbol] --- 1102 -
shell.js --- description: | Test if a given function is a constructor function. defines: [isConstructor] features: [Reflect.construct] --- 596 -
space-number-float.js --- esid: sec-json.stringify description: > Numeric space parameter is truncated to integer part. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 6. If Type(space) is Number, then a. Set space to min(10, ! ToInteger(space)). --- 813 -
space-number-object.js --- esid: sec-json.stringify description: > Number objects are converted to primitives using ToNumber. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 5. If Type(space) is Object, then a. If space has a [[NumberData]] internal slot, then i. Set space to ? ToNumber(space). --- 1140 -
space-number-range.js --- esid: sec-json.stringify description: > Numeric space parameter is clamped to 0..10 range. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 6. If Type(space) is Number, then a. Set space to min(10, ! ToInteger(space)). b. If space < 1, let gap be the empty String; otherwise let gap be the String value containing space occurrences of the code unit 0x0020 (SPACE). --- 863 -
space-number.js --- esid: sec-json.stringify description: > Numeric space parameter (integer in range 0..10) is equivalent to string of spaces of that length. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 6. If Type(space) is Number, then [...] b. If space < 1, let gap be the empty String; otherwise let gap be the String value containing space occurrences of the code unit 0x0020 (SPACE). --- 876 -
space-string-object.js --- esid: sec-json.stringify description: > String exotic objects are converted to primitives using ToString. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 5. If Type(space) is Object, then [...] b. Else if space has a [[StringData]] internal slot, then i. Set space to ? ToString(space). --- 1186 -
space-string-range.js --- esid: sec-json.stringify description: > Only first 10 code units of string space parameter are used. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 7. Else if Type(space) is String, then a. If the length of space is 10 or less, let gap be space; otherwise let gap be the String value consisting of the first 10 code units of space. --- 758 -
space-string.js --- esid: sec-json.stringify description: > String space is used as gap. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 7. Else if Type(space) is String, then a. If the length of space is 10 or less, let gap be space; otherwise let gap be the String value consisting of the first 10 code units of space. --- 941 -
space-wrong-type.js --- esid: sec-json.stringify description: > Space parameter of wrong type is silently ignored. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 8. Else, a. Let gap be the empty String. features: [Symbol] --- 881 -
value-array-abrupt.js --- esid: sec-serializejsonarray description: > Abrupt completion from Get. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 10. If Type(value) is Object and IsCallable(value) is false, then a. Let isArray be ? IsArray(value). b. If isArray is true, return ? SerializeJSONArray(value). SerializeJSONArray ( value ) [...] 6. Let len be ? LengthOfArrayLike(value). features: [Proxy] --- 1454 -
value-array-circular.js --- esid: sec-serializejsonarray description: > Circular array value throws a TypeError. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 10. If Type(value) is Object and IsCallable(value) is false, then a. Let isArray be ? IsArray(value). b. If isArray is true, return ? SerializeJSONArray(value). SerializeJSONArray ( value ) 1. If stack contains value, throw a TypeError exception because the structure is cyclical. --- 963 -
value-array-proxy-revoked.js --- esid: sec-json.stringify description: > Revoked array proxy value produces a TypeError. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 10. If Type(value) is Object and IsCallable(value) is false, then a. Let isArray be ? IsArray(value). IsArray ( argument ) [...] 3. If argument is a Proxy exotic object, then a. If argument.[[ProxyHandler]] is null, throw a TypeError exception. features: [Proxy] --- 977 -
value-array-proxy.js --- esid: sec-serializejsonarray description: > Proxy of an array is treated as an array. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 10. If Type(value) is Object and IsCallable(value) is false, then a. Let isArray be ? IsArray(value). b. If isArray is true, return ? SerializeJSONArray(value). SerializeJSONArray ( value ) [...] 6. Let len be ? LengthOfArrayLike(value). 7. Let index be 0. 8. Repeat, while index < len a. Let strP be ? SerializeJSONProperty(! ToString(index), value). features: [Proxy] --- 1326 -
value-bigint-cross-realm.js --- esid: sec-serializejsonproperty description: JSON.stringify called with a BigInt object from another realm features: [BigInt, cross-realm] --- 701 -
value-bigint-order.js --- description: BigInt stringify order of steps esid: sec-serializejsonproperty info: | Runtime Semantics: SerializeJSONProperty ( key, holder ) 2. If Type(value) is Object or BigInt, then a. Let toJSON be ? GetGetV(value, "toJSON"). b. If IsCallable(toJSON) is true, then i. Set value to ? Call(toJSON, value, « key »). 3. If ReplacerFunction is not undefined, then a. Set value to ? Call(ReplacerFunction, holder, « key, value »). 4. If Type(value) is Object, then [...] d. Else if value has a [[BigIntData]] internal slot, then i. Set value to value.[[BigIntData]]. [...] 10. If Type(value) is BigInt, throw a TypeError exception features: [BigInt, arrow-function] --- 1325 -
value-bigint-replacer.js --- description: JSON serialization of BigInt values with replacer esid: sec-serializejsonproperty info: | Runtime Semantics: SerializeJSONProperty ( key, holder ) 3. If ReplacerFunction is not undefined, then a. Set value to ? Call(ReplacerFunction, holder, « key, value »). features: [BigInt] --- 712 -
value-bigint-tojson-receiver.js --- esid: sec-serializejsonproperty description: toJSON method called with BigInt as receiver features: [BigInt] --- 820 -
value-bigint-tojson.js --- description: BigInt toJSON method esid: sec-serializejsonproperty info: | Runtime Semantics: SerializeJSONProperty ( key, holder ) 2. If Type(value) is Object or BigInt, then a. Let toJSON be ? GetGetV(value, "toJSON"). b. If IsCallable(toJSON) is true, then i. Set value to ? Call(toJSON, value, « key »). features: [BigInt] --- 626 -
value-bigint.js --- description: JSON serialization of BigInt values esid: pending features: [BigInt] --- 418 -
value-boolean-object.js --- esid: sec-serializejsonproperty description: > Boolean objects are converted to primitives using [[BooleanData]]. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 4. If Type(value) is Object, then [...] c. Else if value has a [[BooleanData]] internal slot, then i. Set value to value.[[BooleanData]]. [...] 6. If value is true, return "true". 7. If value is false, return "false". --- 1022 -
value-function.js --- esid: sec-serializejsonproperty description: > Function values are ignored. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 10. If Type(value) is Object and IsCallable(value) is false, then [...] 11. Return undefined. --- 718 -
value-number-negative-zero.js --- esid: sec-serializejsonproperty description: > Negative zero numbers are stringified to "0". info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 9. If Type(value) is Number, then a. If value is finite, return ! ToString(value). NumberToString ( m ) [...] 2. If m is +0 or -0, return the String "0". --- 779 -
value-number-non-finite.js --- esid: sec-serializejsonproperty description: > Non-finite numbers as serialized as null. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 4. If Type(value) is Object, then a. If value has a [[NumberData]] internal slot, then i. Set value to ? ToNumber(value). [...] 9. If Type(value) is Number, then a. If value is finite, return ! ToString(value). b. Return "null". --- 867 -
value-number-object.js --- esid: sec-serializejsonproperty description: > Number objects are converted to primitives using ToNumber. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 4. If Type(value) is Object, then a. If value has a [[NumberData]] internal slot, then i. Set value to ? ToNumber(value). [...] 9. If Type(value) is Number, then a. If value is finite, return ! ToString(value). --- 1411 -
value-object-abrupt.js --- esid: sec-serializejsonproperty description: > Abrupt completion from Get. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) 1. Let value be ? Get(holder, key). --- 584 -
value-object-circular.js --- esid: sec-serializejsonobject description: > Circular object value throws a TypeError. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 10. If Type(value) is Object and IsCallable(value) is false, then [...] c. Return ? SerializeJSONObject(value). SerializeJSONObject ( value ) 1. If stack contains value, throw a TypeError exception because the structure is cyclical. --- 974 -
value-object-proxy-revoked.js --- esid: sec-serializejsonobject description: > Revoked object proxy value produces a TypeError. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 10. If Type(value) is Object and IsCallable(value) is false, then [...] c. Return ? SerializeJSONObject(value). SerializeJSONObject ( value ) [...] 6. Else, a. Let K be ? EnumerableOwnPropertyNames(value, "key"). features: [Proxy] --- 959 -
value-object-proxy.js --- esid: sec-serializejsonobject description: > Proxy of an object is treated as regular object. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 10. If Type(value) is Object and IsCallable(value) is false, then [...] c. Return ? SerializeJSONObject(value). SerializeJSONObject ( value ) [...] 6. Else, a. Let K be ? EnumerableOwnPropertyNames(value, "key"). 7. Let partial be a new empty List. 8. For each element P of K, do a. Let strP be ? SerializeJSONProperty(P, value). features: [Proxy] --- 1506 -
value-primitive-top-level.js --- esid: sec-serializejsonproperty description: > Top-level primitive values are stringified correctly. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 5. If value is null, return "null". 6. If value is true, return "true". 7. If value is false, return "false". 8. If Type(value) is String, return QuoteJSONString(value). 9. If Type(value) is Number, then a. If value is finite, return ! ToString(value). [...] 11. Return undefined. --- 1055 -
value-string-escape-ascii.js --- esid: sec-quotejsonstring description: > JSON.stringify property names and values containing ASCII characters that require escaping --- 1757 -
value-string-escape-unicode.js --- esid: sec-quotejsonstring description: > JSON.stringify strings containing surrogate code units features: [well-formed-json-stringify] --- 1798 -
value-string-object.js --- esid: sec-serializejsonproperty description: > String exotic objects are converted to primitives using ToString. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 4. If Type(value) is Object, then [...] b. Else if value has a [[StringData]] internal slot, then i. Set value to ? ToString(value). [...] 8. If Type(value) is String, return QuoteJSONString(value). --- 1420 -
value-symbol.js --- esid: sec-serializejsonproperty description: > Symbol primitives are ignored, both as keys and as values. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 11. Return undefined. features: [Symbol] --- 756 -
value-tojson-abrupt.js --- esid: sec-serializejsonproperty description: > Abrupt completions from Get and Call. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 2. If Type(value) is Object, then a. Let toJSON be ? Get(value, "toJSON"). b. If IsCallable(toJSON) is true, then i. Set value to ? Call(toJSON, value, « key »). --- 872 -
value-tojson-arguments.js --- esid: sec-serializejsonproperty description: > toJSON is called with correct context and arguments. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 2. If Type(value) is Object, then a. Let toJSON be ? Get(value, "toJSON"). b. If IsCallable(toJSON) is true, then i. Set value to ? Call(toJSON, value, « key »). --- 1210 -
value-tojson-array-circular.js --- esid: sec-serializejsonarray description: > Circular array value (returned from toJSON method) throws a TypeError. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 2. If Type(value) is Object, then a. Let toJSON be ? Get(value, "toJSON"). b. If IsCallable(toJSON) is true, then i. Set value to ? Call(toJSON, value, « key »). [...] 10. If Type(value) is Object and IsCallable(value) is false, then a. Let isArray be ? IsArray(value). b. If isArray is true, return ? SerializeJSONArray(value). SerializeJSONArray ( value ) 1. If stack contains value, throw a TypeError exception because the structure is cyclical. --- 1110 -
value-tojson-not-function.js --- esid: sec-serializejsonproperty description: > toJSON value is not callable. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 2. If Type(value) is Object, then a. Let toJSON be ? Get(value, "toJSON"). b. If IsCallable(toJSON) is true, then i. Set value to ? Call(toJSON, value, « key »). --- 883 -
value-tojson-object-circular.js --- esid: sec-serializejsonobject description: > Circular object value (returned from toJSON method) throws a TypeError. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 2. If Type(value) is Object, then a. Let toJSON be ? Get(value, "toJSON"). b. If IsCallable(toJSON) is true, then i. Set value to ? Call(toJSON, value, « key »). [...] 10. If Type(value) is Object and IsCallable(value) is false, then [...] c. Return ? SerializeJSONObject(value). SerializeJSONObject ( value ) 1. If stack contains value, throw a TypeError exception because the structure is cyclical. --- 1072 -
value-tojson-result.js --- esid: sec-serializejsonproperty description: > Result of toJSON method is stringified. info: | JSON.stringify ( value [ , replacer [ , space ] ] ) [...] 12. Return ? SerializeJSONProperty(the empty String, wrapper). SerializeJSONProperty ( key, holder ) [...] 2. If Type(value) is Object, then a. Let toJSON be ? Get(value, "toJSON"). b. If IsCallable(toJSON) is true, then i. Set value to ? Call(toJSON, value, « key »). --- 1083 -