UNPKG

1.16 kBMarkdownView Raw
1# FClone
2
3[![Build Status](https://travis-ci.org/soyuka/fclone.svg?branch=master)](https://travis-ci.org/soyuka/fclone)
4
5This module clones a Javascript object in safe mode (eg: drops circular values) recursively. Circular values are replaced with a string: `'[Circular]'`.
6
7Ideas from [tracker1/safe-clone-deep](https://github.com/tracker1/safe-clone-deep). I improved the workflow a bit by:
8- refactoring the code (complete rewrite)
9- fixing node 6+
10- minor performance tweaks
11- use of `Array.isArray` and `Buffer.isBuffer`
12
13## Installation
14
15```bash
16npm install fclone
17# or
18bower install fclone
19```
20
21## Usage
22
23```javascript
24const fclone = require('fclone')
25
26let a = {b: a, c: 'hello'}
27let o = fclone(a)
28
29console.log(o)
30// outputs: { c: 'hello', b: '[Circular]' }
31```
32
33## Benchmarks
34
35Some benchs:
36
37```
38fclone x 13,342 ops/sec ±3.83% (79 runs sampled)
39fclone + json.stringify x 7,311 ops/sec ±3.99% (77 runs sampled)
40jsan x 4,419 ops/sec ±3.11% (86 runs sampled)
41circularjson x 4,294 ops/sec ±0.82% (91 runs sampled)
42deepcopy x 5,298 ops/sec ±0.76% (83 runs sampled)
43json-stringify-safe x 5,201 ops/sec ±0.82% (84 runs sampled)
44Fastest is fclone
45```