fast-copy 项目技术文档

fast-copy 项目技术文档

【免费下载链接】fast-copy A blazing fast deep object copier 【免费下载链接】fast-copy 项目地址: https://gitcode.com/gh_mirrors/fa/fast-copy

1. 安装指南

1.1 安装环境要求

  • Node.js 版本 >= 12.0.0
  • npm 或 yarn 包管理器

1.2 安装步骤

  1. 打开终端或命令行工具。
  2. 使用 npm 或 yarn 安装 fast-copy
npm install fast-copy

yarn add fast-copy

2. 项目的使用说明

2.1 基本使用

fast-copy 是一个快速深拷贝对象的库。它支持多种数据类型,并且能够处理循环引用。

import copy from 'fast-copy';
import { deepEqual } from 'fast-equals';

const object = {
  array: [123, { deep: 'value' }],
  map: new Map([
    ['foo', {}],
    [{ bar: 'baz' }, 'quz'],
  ]),
};

const copiedObject = copy(object);

console.log(copiedObject === object); // false
console.log(deepEqual(copiedObject, object)); // true

2.2 严格模式

copyStrict 方法提供了更严格的深拷贝,保留原始对象的属性描述符和非可枚举属性。

import { copyStrict } from 'fast-copy';

const object = { foo: 'bar' };
object.nonEnumerable = Object.defineProperty(object, 'bar', {
  enumerable: false,
  value: 'baz',
});

const copied = copyStrict(object);

3. 项目API使用文档

3.1 copy

深拷贝传入的对象。

import copy from 'fast-copy';

const copied = copy({ foo: 'bar' });

3.2 copyStrict

深拷贝传入的对象,但具有额外的严格性:

  • 属性保留其原始属性描述符
  • 非可枚举键被复制
  • 非标准属性(例如数组/映射/集合上的键)被复制
import { copyStrict } from 'fast-copy';

const object = { foo: 'bar' };
object.nonEnumerable = Object.defineProperty(object, 'bar', {
  enumerable: false,
  value: 'baz',
});

const copied = copyStrict(object);

3.3 createCopier

创建一个基于传入的类型特定方法的自定义拷贝器。

import { createCopier } from 'fast-copy';

const copyShallow = createCopier({
  array: (array) => [...array],
  map: (map) => new Map(map.entries()),
  object: (object) => ({ ...object }),
  set: (set) => new Set(set.values()),
});

3.4 createStrictCopier

创建一个基于传入的类型特定方法的自定义拷贝器,但默认使用与 copyStrict 相同的函数。

const createStrictClone = (value, clone) =>
  Object.getOwnPropertyNames(value).reduce(
    (clone, property) =>
      Object.defineProperty(
        clone,
        property,
        Object.getOwnPropertyDescriptor(value, property) || {
          configurable: true,
          enumerable: true,
          value: clone[property],
          writable: true,
        }
      ),
    clone
  );

const copyStrictShallow = createStrictCopier({
  array: (array) => createStrictClone(array, []),
  map: (map) => createStrictClone(map, new Map(map.entries())),
  object: (object) => createStrictClone(object, {}),
  set: (set) => createStrictClone(set, new Set(set.values())),
});

4. 项目安装方式

4.1 使用 npm 安装

npm install fast-copy

4.2 使用 yarn 安装

yarn add fast-copy

通过以上步骤,您可以轻松地将 fast-copy 集成到您的项目中,并利用其强大的深拷贝功能。

【免费下载链接】fast-copy A blazing fast deep object copier 【免费下载链接】fast-copy 项目地址: https://gitcode.com/gh_mirrors/fa/fast-copy

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值