Skip to content

clone

引数 arg を受け取り、そのシャローコピーを返します。

基本型、プレーンオブジェクト(Object.prototype.toString.apply(arg).slice(8, -1)"Object" を返すもの)、および以下の組み込みオブジェクトをサポートします:Array, Map, Set, Date, RegExp

Lodash のアプローチと同様に、Error, Function, Promise, HTMLElement などクローン不可能な組み込みオブジェクトに対しては、空のプレーンオブジェクトを返します。

プレーンオブジェクトの場合、プロトタイプを基に新しいオブジェクトを構築しようと試みます(シャローコピー)。プロトタイプが存在しない場合は空のオブジェクトを作成します。その後、入力引数 arg の列挙可能なプロパティを追加します。

Arguments オブジェクトの場合、この関数はクローンとして Array を返します(v0.0.3)。

RegExp オブジェクトの場合、この関数は lastIndex フィールドをクローンしません。

クローンがサポートされる組み込みオブジェクト:

カテゴリサポートされているオブジェクト
ラッパークラスString Number Boolean
コレクションタイプObject Array Map Set Arguments(v0.0.3)
日付と時刻Date
正規表現RegExp
ファイルとストリームBlob File ArrayBuffer
TypedArrayInt8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array BigInt64Array BigUint64Array

Added in v0.0.1

Usage

ts
import { clone } from 'parsnip-kit'

clone(undefined) // undefined
clone(null) // null
clone(123) // 123
clone('test') // 'test'
clone(true) // true
clone(BigInt(123)) // 123n
clone(Symbol('test')) // Symbol(test)

clone(new Date(0)) // Thu Jan 01 1970 08:00:00
clone(/test/) // /test/

const arr = [{ data: 1 }, { data: 2 }, { data: 3 }]
const cloneArr = clone(arr) // [{ data: 1 }, { data: 2 }, { data: 3 }]
cloneArray === arr // false

const obj = { a: { data: 1 }, b: { data: 2 }, c: { data: 3 } }
const cloneObj = clone(obj) // { a: { data: 1 }, b: { data: 2 }, c: { data: 3 } }
cloneObj === obj // false

const set = new Set([{ data: 1 }, { data: 2 }, { data: 3 }])
const cloneSet = clone(set) // Set(3) {{ data: 1 }, { data: 2 }, { data: 3 }}
cloneSet === set // false

const map = new Map([['a', { data: 1 }], ['b', { data: 2 }], ['c', { data: 3 }]])
const cloneMap = clone(map) // Map(3) {'a' => { data: 1 }, 'b' => { data: 2 }, 'c' => { data: 3 }}
cloneMap === map // false

API

Type Parameter

ArgTypeDescription
Textends PrimitiveType | ObjectLikeコピーされるパラメータの型

Arguments

ArgTypeOptionalDefaultDescription
objTfalseundefinedコピーされるパラメータ

Returns

Type
T

Reference

PrimitiveType ObjectLike