JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 287355
  • Score
    100M100P100Q166186F
  • License MIT

deep copy for any data

Package Exports

  • deepcopy
  • deepcopy/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (deepcopy) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

deepcopy.js

Build Status Dependency Status NPM version

deep copy for any data

Playground

REPL powered by Tonic

Installation

$ npm install deepcopy

Usage

node.js

var deepcopy = require("deepcopy");

browser

<script src="deepcopy.min.js"></script>

Example

basic usage:

var base, copy;

base = {
  desserts: [
    { name: "cake"      },
    { name: "ice cream" },
    { name: "pudding"   }
  ]
};

copy = deepcopy(base);
base.desserts = null;

console.log(base);
// { desserts: null }
console.log(copy);
// { desserts: [ { name: 'cake' }, { name: 'ice cream' }, { name: 'pudding' } ] }

customize deepcopy:

function MyClass(id) {
  this._id = id;
}

var base, copy;

base = {
  myClasses: [
    new MyClass(1),
    new MyClass(2),
    new MyClass(3)
  ]
};

copy = deepcopy(base, function(target) {
  if (target.constructor === MyClass) {
    return new MyClass(target._id);
  }
});
base.myClasses = null;

console.log(base);
// { myClasses: null }
console.log(copy);
// { myClasses: [ MyClass { _id: 1 }, MyClass { _id: 2 }, MyClass { _id: 3 } ] }

Functions

deepcopy(value[, customizer])

  • value
    • * - target value
  • customizer
    • Function - customize function
  • return
    • * - copied value

support types are below:

  • Number
  • String
  • Boolean
  • Null
  • Undefined
  • Function
    • shallow copy if it is native function
  • Date
  • RegExp
  • Array
    • support recursive copy
    • also can copy if it has circular reference
  • Object
    • support recursive copy
    • also can copy if it has circular reference
  • Buffer (node.js only)
  • Symbol

Test

$ npm install
$ npm test

Contributors

License

The MIT license. Please see LICENSE file.