You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
iotcat 74338fbb93 auto update 5 years ago
..
build auto update 5 years ago
lib auto update 5 years ago
src auto update 5 years ago
.npmignore auto update 5 years ago
HISTORY.md auto update 5 years ago
LICENSE auto update 5 years ago
README.md auto update 5 years ago
index.js auto update 5 years ago
package.json auto update 5 years ago

README.md

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.