জাভাস্ক্রিপ্ট অবজেক্টের প্রপার্টি ডাইনামিক্যালি মার্জ করার দুটি পদ্ধতি রয়েছে:
১) Object.assign()
Object.assign() মেথড এক বা একাধিক সোর্স অবজেক্টের সব প্রপার্টির মান টার্গেট অবজেক্টে কপি করে। এটি টার্গেট অবজেক্ট রিটার্ন করে।
উদাহরণ-১
<html> <body>
<script>
var target = { a: "ram", b: "rahim" };
var source = { c: "akbar", d: "anthony" };
var returnedTarget = Object.assign(target, source);
document.write(JSON.stringify(target));
document.write(JSON.stringify(returnedTarget));
</script>
</body> </html>
আউটপুট
{"a":"ram","b":"rahim","c":"akbar","d":"anthony"} {"a":"ram","b":"rahim","c":"akbar","d":"anthony"}
যদি অবজেক্টগুলোতে একই কী থাকে, তবে послед declarar করা অবজেক্টের ভ্যালু কপি হবে।
উদাহরণ-২: একই কী থাকলে
<html> <body>
<script>
var target = { a: "ram", b: "rahim" };
var source = { b: "akbar", d: "anthony" };
var returnedTarget = Object.assign(target, source);
document.write(JSON.stringify(target));
document.write("</br>");
document.write(JSON.stringify(returnedTarget));
</script>
</body> </html>
আউটপুট
{"a":"ram","b":"akbar","d":"anthony"} {"a":"ram","b":"akbar","d":"anthony"}
২) স্প্রেড অপারেটর ব্যবহার
স্প্রেড অপারেটর এক্সপ্রেশনকে এক্সপ্যান্ড করে যেখানে মাল্টিপল এলিমেন্ট/ভেরিয়েবল/আর্গুমেন্ট এক্সপেক্ট করা হয়। জাভাস্ক্রিপ্ট অবজেক্ট যেহেতু কী-ভ্যালু পেয়ার এন্টিটি, তাই স্প্রেড অপারেটর দিয়ে সেগুলো একে মার্জ করা যায়।
সিনট্যাক্স
var returnedTarget = {...target, ...source}
উদাহরণ
<html> <body>
<script>
var target = { a: "ram", b: "rahim" };
var source = { b: "akbar", d: "anthony" };
var returnedTarget = {...target, ...source}
document.write(JSON.stringify(returnedTarget));
</script>
</body> </html>
আউটপুট
{"a":"ram","b":"akbar","d":"anthony"}
ব্যাখ্যা
Object.assign() মিউটেট করে টার্গেট অবজেক্টকে, কিন্তু স্প্রেড অপারেটর একটি নতুন অবজেক্ট তৈরি করে। আধুনিক জাভাস্ক্রিপ্টে স্প্রেড অপারেটর অধিক পছন্দনীয় কারণ এটি ইমিউটেবল প্যাটার্ন ফলো করে।