> Le 5 août 2018 à 04:50, Claude Pache <[email protected]> a écrit : > > > >> Le 5 août 2018 à 01:43, Michael Theriot <[email protected] >> <mailto:[email protected]>> a écrit : >> >> Try `Number.prototype.valueOf.call(obj)`: it will throw a TypeError if and >> only if `obj` has no [[NumberData]] internal slot. Ditto for String, Boolean >> and Symbol. >> >> I already mention this and demonstrate why it is not sufficient in my >> example. >> >> Reiterated plainly: >> ```js >> JSON.stringify(Reflect.construct(Number, [], Number)); // "0" >> JSON.stringify(Reflect.construct(Number, [], String)); // TypeError >> JSON.stringify(Reflect.construct(Number, [], Object)); // null >> ``` > > Per spec, the three expressions should produce `"0"`, as the three objects > have a [[NumberData]] internal slot (step 4 of [1]). I guess there is some > discrepancy between implementation and spec for those exotic edge cases? > > [1]: https://tc39.github.io/ecma262/#sec-serializejsonproperty > <https://tc39.github.io/ecma262/#sec-serializejsonproperty> > > —Claude >
I see that there is a difference in this algorithm between the current spec and ES 2015 for that particular step. From my tests, current stable Firefox and Safari (other browsers not tested) still follow the old algorithm. —Claude
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

