Since properties order in objects is not guaranteed in JavaScript, how does JSON.stringify() actually behave?
I looked at the ECMAScript standard for JSON.stringify
: http://www.ecma-international.org/ecma-262/5.1/#sec-15.12.3
This seems informative:
For each element P of K.
Let strP be the result of calling the abstract operation Str with arguments P and value. If strP is not undefined Let member be the result of calling the abstract operation Quote with argument P. Let member be the concatenation of member and the colon character. If gap is not the empty String Let member be the concatenation of member and the space character. Let member be the concatenation of member and strP. Append member to partial.
The "append" in the final step strongly implies that the results are ordered per the source, and I can confirm your code assertions pass on both Chromium and Firefox.
EDIT: For "P of K", this might be relevant too:
The ordering of the Strings should be the same as that used by the Object.keys standard built-in function.
It seems that your assertions are true so long as the comparisons are kept in one browser.