dcp
This module supports making copy / clone deeply and faster.
Benchmark
- Node.js: v12.7.0
- benchmark.js: v2.1.0
yarn benchmark 1 "dcp" 00665μs1001002 "JSON" 373μs001785613 "lodash" 376μs00177566
Usage
Runtime parsing
If the reference of the base object is NOT changed, you can use it without defining a key.
const obj = a: 10 c: 1 2 d: {}; // only first time, it will be parsedconst newObj = dcp;/* * { a: 10, * b: '', * c: [1, 2], * d: { d1: false } } */
Runtime parsing with a key
If the reference is changed but the format is the same, you need to use it with a key.
// only first time, it will be parsedconst newObj = dcp;/* * { a: 10, * b: '', * c: [1, 2], * d: { d1: false } } */ // get the default valuesconst newObj2 = dcp;/* * { a: 0, * b: '', * c: [0, 0], * d: { d1: false } } */
Pre-defined
It is the fastest way, but the difference is only the first clone.
const structure = a: 1 b: 'default' c: undefined undefined d: d1: true ;const key = 'test';dcp;const newObj = dcp;
APIs
define
arguments: (key: any, structure: any) arguments: (structure: any)
If it is called, functions which have the structure will be made.
clone
arguments: (key: any, structure: any) arguments: (structure: any)
The deep clone will be made by defined structure.
If the key isn't defined, define
will be called and then the deep clone function will be called.