// |jit-test| // vim: set ts=8 sts=4 et sw=4 tw=99: function assertObjectsEqual(obj1, obj2) { assertEq(obj1.a, obj2.a); assertEq(obj1.b, obj2.b); assertEq(obj1.c, obj2.c); assertEq(obj1.d, obj2.d); assertEq(obj2.a, 1); assertEq(obj2.b, "bee"); assertEq(obj2.c, "crab"); assertEq(obj2.d, 12); } function forName(obj) { eval(''); var r = { }; for (x in obj) r[x] = obj[x]; return r; } function forGlobalName(obj) { var r = { }; for (x in obj) r[x] = obj[x]; return r; } function forProp(obj) { var r = { }; var c = { }; for (c.x in obj) r[c.x] = obj[c.x]; return r; } function forElem(obj, x) { var r = { }; var c = { }; for (c[x] in obj) r[c[x]] = obj[c[x]]; return r; } function forLocal(obj) { var r = { }; for (var x in obj) r[x] = obj[x]; return r; } function forArg(obj, x) { var r = { }; for (x in obj) r[x] = obj[x]; return r; } var obj = { a: 1, b: "bee", c: "crab", d: 12 }; assertObjectsEqual(obj, forName(obj)); assertObjectsEqual(obj, forGlobalName(obj)); assertObjectsEqual(obj, forProp(obj)); assertObjectsEqual(obj, forElem(obj, "v")); assertObjectsEqual(obj, forLocal(obj)); assertObjectsEqual(obj, forArg(obj));