Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
<meta name="description" content="[add your bin description]" />
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
  
</body>
</html>
 
/*
You can use functional closure to gain all the benefits of a deep copy, without a deep copy. It's a very different paradigm, but works well. Instead of trying to copy an existing object, just use a function to instantiate a new object when you need one.
*/
//First, create an function that returns an object
function template() {
  return {
    values: [1, 2, 3],
    nest: {x: {a: "a", b: "b"}, y: 100}
  };
}
//Then create a simple shallow copy function
function copy(a, b) {
  Object.keys(b).forEach(function(key) {
    a[key] = b[key];
  });
}
//Create a new object, and copy the template's properties onto it
var newObject = {}; 
copy(newObject, template());
//Now that you have a new object, test to see what the its properties are:
console.log(Object.keys(newObject));
//This displays:
//["values", "nest"]
//Yes, those are the newObject's own properties, not references to properties on another object.
//Let's just check:
console.log(newObject.nest.x.b);
//This displays:
//"b"
//The newObject has acquired all of the template object's properties, but is free of any dependency chain.
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
kittykatattackpro
0viewers