property-order.js (797B)
1 // Copyright 2019 Kevin Gibbons. All rights reserved. 2 // This code is governed by the BSD license found in the LICENSE file. 3 4 /*--- 5 esid: sec-serializejsonobject 6 description: JSON.stringify property enumeration order 7 features: [for-in-order] 8 ---*/ 9 10 var o = { 11 p1: 'p1', 12 p2: 'p2', 13 p3: 'p3', 14 }; 15 16 // This getter will be triggered during enumeration, but the property it adds should not be enumerated. 17 Object.defineProperty(o, 'add', { 18 enumerable: true, 19 get: function () { 20 o.extra = 'extra'; 21 return 'add'; 22 } 23 }); 24 25 o.p4 = 'p4'; 26 27 o[2] = '2'; 28 o[0] = '0'; 29 o[1] = '1'; 30 31 delete o.p1; 32 delete o.p3; 33 o.p1 = 'p1'; 34 35 var actual = JSON.stringify(o); 36 37 var expected = '{"0":"0","1":"1","2":"2","p2":"p2","add":"add","p4":"p4","p1":"p1"}'; 38 39 assert.sameValue(actual, expected); 40 41 reportCompare(0, 0);