fork download
  1. function shallowCopy(object) {
  2. if (object instanceof Date) {
  3. return new Date(+object);
  4. }
  5. var copy = {};
  6. for (var key in object) {
  7. if (object.hasOwnProperty(key)) {
  8. copy[key] = object[key];
  9. }
  10. }
  11. return copy;
  12. }
  13.  
  14. var a = { x: 1, y: 2, z: [1, 2, 3] };
  15. var b = shallowCopy(a); // b — это отдельный объект
  16. b.x = 10;
  17. console.log(a.x); // 1
  18.  
  19. // Но a.z и b.z указывают на один и тот же массив:
  20. b.z.push(4);
  21. console.log(a.z); // [1, 2, 3, 4]
  22.  
  23. var c = new Date(2014, 1, 1);
  24. var d = shallowCopy(c);
  25. d.setFullYear(2015);
  26. console.log(c.getFullYear()); // 2014
Success #stdin #stdout 0.06s 20312KB
stdin
Standard input is empty
stdout
1
[ 1, 2, 3, 4 ]
2014