در حال حاضر یک استاندارد JS به نام “کلونینگ ساختاری (structural cloning)” وجود دارد که به صورت آزمایشی در Node 11 به بعد کار می کند، در مرورگرها قرار می گیرد و دارای polyfills برای سیستم های موجود است.
structuredClone(value)
آنچه که در این مقاله خواهید خواند:
در صورت نیاز، ابتدا polyfill را بارگیری کنید:
import structuredClone
from’@ungap/structured-clone’;
پاسخ های قدیمی تر به این سوال
cloning سریع با از دست دادن داده – JSON.parse/stringify
اگر از Date ها، توابع، undefined، Infinity، RegExps، نقشه ها، set ها، Blob ها، FileList ها، ImageData ها، آرایههای پراکنده، آرایه های تایپ شده یا از انواع پیچیده دیگر در آبجکت خود استفاده نمیکنید، یک لاینر بسیار ساده برای cloning عمیق یک object این است:
JSON.parse(JSON.stringify(object))
Cloning قابل اعتماد با استفاده از یک کتابخانه
از آنجایی که شبیه سازی اشیاء بی اهمیت نیست (انواع پیچیده، circular references، تابع و غیره)، اکثر کتابخانه های اصلی عملکردی را برای clone کردن آبجکت ارائه می دهند. وقت را تلف نکنید؛ اگر از کتابخانه استفاده می کنید، بررسی کنید که آیا تابع clone کردن آبجکت ها را دارد یا خیر. مثلا،
Loadsh: cloneDeep می تواند به طور جداگانه از طریق ماژول lodash.clonedeep ایمپورت شود و اگر از کتابخانه ای که عملکرد clone سازی عمیق را ارائه می دهد استفاده نمی کنید، احتمالاً بهترین انتخاب شما است.
AngularJS: angular.copy
jQuery: jQuery.extend(true, { }, oldObject) (.clone() فقط عناصر DOM را clone می کند.)
just-clone: just-clone بخشی از کتابخانه ای از ماژول های npm بدون وابستگی که فقط یک کار را انجام می دهند.
برای یادگیری جاوا اسکریپت می توانید از مسیر کارآموزی فرانت اند استفاده کنید.
پاسخها