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
|
5 years ago | |
---|---|---|
.. | ||
build | 5 years ago | |
lib | 5 years ago | |
src | 5 years ago | |
.npmignore | 5 years ago | |
HISTORY.md | 5 years ago | |
LICENSE | 5 years ago | |
README.md | 5 years ago | |
index.js | 5 years ago | |
package.json | 5 years ago |
README.md
deepcopy.js
deep copy for any data
Playground
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.