ক্লোনিং
জাভাস্ক্রিপ্টে ক্লোনিং বলতে একটি অবজেক্টের প্রপার্টিগুলো অন্য একটি অবজেক্টে কপি করা বোঝায়, যাতে ইতিমধ্যে বিদ্যমান একটি অবজেক্ট পুনরায় তৈরি করতে না হয়।
জাভাস্ক্রিপ্ট অবজেক্ট ক্লোন করার кільটি পদ্ধতি আছে:
১) প্রতিটি প্রপার্টি এরিয়েট করে নতুন অবজেক্টে কপি করা।
২) JSON মেথড ব্যবহার করা।
৩) Object.assign() মেথড ব্যবহার করা।
প্রতিটি পদ্ধতি আলাদাভাবে আলোচনা করা হলো:
ক) প্রতিটি প্রপার্টি এরিয়েট করে কপি করা
এটি জাভাস্ক্রিপ্ট অবজেক্ট ক্লোন করার পুরনো পদ্ধতি। প্রতিটি প্রপার্টি এরিয়েট করে নতুন অবজেক্টে কপি করা হয়। এটি সহজ পদ্ধতি কিন্তু কম ব্যবহৃত হয়।
উদাহরণ
<html> <body> <p id="cloning-1"></p> <script> const sourceObject = {name:"salman", age:23, salary:25000}; let requiredObj = {}; for (let pro in sourceObject) { if (sourceObject.hasOwnProperty(pro)) { requiredObj[pro] = sourceObject[pro]; } } document.getElementById("cloning-1").innerHTML = "targetObject name = "+requiredObj.name+", age = " + requiredObj.age+", salary = "+requiredObj.salary; </script> </body> </html>
আউটপুট
targetObject name = salman, age = 23, salary = 25000
খ) JSON মেথড
এটি জাভাস্ক্রিপ্ট অবজেক্ট ক্লোন করার আধুনিক পদ্ধতির একটি। এই মেথডে সোর্স অবজেক্ট অবশ্যই JSON-সেফ হতে হবে।
উদাহরণ
<html> <body> <p id="cloning-2"></p> <script> const sourceObject = {name:"salman", age:23, salary:25000}; let requiredObj = {}; requiredObj = JSON.parse(JSON.stringify(sourceObject)); document.getElementById("cloning-2").innerHTML = "targetObject name = "+requiredObj.name+", age = " + requiredObj.age+", salary = "+requiredObj.salary; </script> </body> </html>
আউটপুট
targetObject name = salman, age = 23, salary = 25000
গ) Object.assign()
এটি একটি উন্নত পদ্ধতি যা আজকাল জাভাস্ক্রিপ্ট অবজেক্ট ক্লোন করার জন্য ব্যাপকভাবে ব্যবহৃত হয়। এই মেথড শ্যালো কপি (shallow copy) করে, অর্থাৎ নেস্টেড প্রপার্টিগুলো এখনো রেফারেন্স দিয়ে কপি হয়।
উদাহরণ
<html> <body> <p id="cloning-3"></p> <script> const sourceObject = {name:"salman", age:23, salary:25000}; let requiredObj = {}; requiredObj = Object.assign({}, sourceObject); document.getElementById("cloning-3").innerHTML = "targetObject name = "+requiredObj.name+", age = " + requiredObj.age+",salary"+requiredObj.salary; </script> </body> </html>
আউটপুট
targetObject name = salman, age = 23, salary = 25000