assign-reuse-propmap.js (1221B)
1 function testBasic() { 2 var o1 = {x: 1}; 3 var o2 = {a: 1, b: 2, c: 3, x: 4, y: 5, z: 6}; 4 for (var i = 0; i < 4; i++) { 5 var to1 = Object.assign({}, o1); 6 assertEq(JSON.stringify(to1), '{"x":1}'); 7 var to2 = Object.assign({}, o2); 8 assertEq(JSON.stringify(to2), '{"a":1,"b":2,"c":3,"x":4,"y":5,"z":6}'); 9 } 10 } 11 testBasic(); 12 13 // Target object's proto must not be changed by assign. 14 function testProto() { 15 var from = {}; 16 from.a = 1; 17 from.b = 2; 18 from.c = 3; 19 for (var i = 0; i < 5; i++) { 20 var to = Object.assign(Object.create(null), from); 21 assertEq(JSON.stringify(to), '{"a":1,"b":2,"c":3}'); 22 assertEq(Object.getPrototypeOf(to), null); 23 } 24 } 25 testProto(); 26 27 // Target object's realm must not be changed by assign. 28 function testRealm() { 29 var global = newGlobal({sameCompartmentAs: this}); 30 var from = global.evaluate("({})"); 31 from.a = 1; 32 from.b = 2; 33 from.c = 3; 34 for (var i = 0; i < 5; i++) { 35 var to = Object.assign({}, from); 36 assertEq(JSON.stringify(to), '{"a":1,"b":2,"c":3}'); 37 assertEq(objectGlobal(to), this); 38 assertEq(Object.getPrototypeOf(to), Object.prototype); 39 } 40 } 41 testRealm();