_.extend ফাংশন
_.extend হল Underscore.js এর একটি অত্যন্ত ব্যবহৃত ইউটিলিটি ফাংশন যা একটি বা একাধিক অবজেক্টের সমস্ত প্রপার্টি অন্য একটি অবজেক্টে কপি করে। এটি মূলত অবজেক্ট ম্যানিপুলেশনের জন্য ব্যবহৃত হয়, যেখানে আপনি একাধিক অবজেক্টের প্রপার্টি একত্রিত করতে পারেন।
Sintax:
_.extend(destination, *sources)
destination: যে অবজেক্টে আপনি প্রপার্টি কপি করতে চান, অর্থাৎ টার্গেট অবজেক্ট।sources: এক বা একাধিক অবজেক্ট, যার প্রপার্টিগুলিdestinationঅবজেক্টে কপি করা হবে।
উদাহরণ:
// দুইটি অবজেক্ট
let person = { name: 'John', age: 30 };
let contact = { email: 'john@example.com', phone: '1234567890' };
// _.extend ব্যবহার করে person অবজেক্টে contact অবজেক্টের প্রপার্টি যুক্ত করা
_.extend(person, contact);
console.log(person);
// আউটপুট: { name: 'John', age: 30, email: 'john@example.com', phone: '1234567890' }
এখানে, _.extend ফাংশনটি contact অবজেক্টের সমস্ত প্রপার্টি person অবজেক্টে কপি করে দিয়েছে। এর ফলে person অবজেক্টে নতুন প্রপার্টি যেমন email এবং phone যোগ হয়েছে।
_.defaults ফাংশন
_.defaults ফাংশনটি একটু ভিন্নভাবে কাজ করে। এটি কেবলমাত্র প্রথম অবজেক্টে সেই প্রপার্টি কপি করবে যদি সেই প্রপার্টি সেখানে উপস্থিত না থাকে। এর মানে হল, _.defaults ফাংশনটি আপনার টার্গেট অবজেক্টে নতুন প্রপার্টি যোগ করবে যদি সেই প্রপার্টি ইতোমধ্যে সেখানে না থাকে। এটি মূলত আপনার অবজেক্টকে "ডিফল্ট মান" সরবরাহ করার জন্য ব্যবহৃত হয়।
Sintax:
_.defaults(object, *defaults)
object: যে অবজেক্টে আপনি ডিফল্ট প্রপার্টি যোগ করতে চান।defaults: এক বা একাধিক অবজেক্ট, যা ডিফল্ট মান সরবরাহ করবে যদি সেই প্রপার্টিobjectঅবজেক্টে উপস্থিত না থাকে।
উদাহরণ:
// দুটি অবজেক্ট
let user = { name: 'John' };
let defaultSettings = { name: 'Unknown', age: 25, location: 'USA' };
// _.defaults ব্যবহার করে user অবজেক্টে defaultSettings এর ডিফল্ট প্রপার্টি যোগ করা
_.defaults(user, defaultSettings);
console.log(user);
// আউটপুট: { name: 'John', age: 25, location: 'USA' }
এখানে, _.defaults ফাংশনটি user অবজেক্টে ডিফল্ট মান হিসেবে age এবং location যোগ করেছে, যেহেতু user অবজেক্টে সেগুলি উপস্থিত ছিল না। তবে name প্রপার্টি আগেই user অবজেক্টে উপস্থিত ছিল, তাই এটি পরিবর্তন হয়নি।
_.extend এবং _.defaults এর মধ্যে পার্থক্য
| ফিচার | _.extend | _.defaults |
|---|---|---|
| কাজের পদ্ধতি | এক বা একাধিক অবজেক্টের প্রপার্টি কপি করে টার্গেট অবজেক্টে যুক্ত করে। | কেবলমাত্র টার্গেট অবজেক্টে প্রপার্টি যোগ করা হয়, যদি তা সেখানে না থাকে। |
| ডেটা ওভাররাইট করা | যদি প্রপার্টি টার্গেট অবজেক্টে আগে থেকেই থাকে, তবে তা ওভাররাইট করা হয়। | পুরানো মান অপরিবর্তিত থাকে, নতুন মান যোগ করা হয় শুধুমাত্র যদি প্রপার্টি না থাকে। |
| ব্যবহার | যখন একাধিক অবজেক্টের প্রপার্টি একত্রিত করতে চান। | যখন ডিফল্ট মান সরবরাহ করতে চান যদি অবজেক্টে কিছু প্রপার্টি অনুপস্থিত থাকে। |
সারাংশ
_.extendফাংশনটি মূলত একাধিক অবজেক্টের প্রপার্টি একত্রিত করতে ব্যবহৃত হয়, এবং এটি যদি টার্গেট অবজেক্টে আগে থেকেই কোন প্রপার্টি থাকে তবে সেই প্রপার্টি ওভাররাইট করে।_.defaultsফাংশনটি প্রপার্টি কেবলমাত্র যোগ করবে যদি সেই প্রপার্টি টার্গেট অবজেক্টে উপস্থিত না থাকে। এটি ডিফল্ট মান প্রদান করার জন্য উপযুক্ত।
এটি আপনার অবজেক্ট ম্যানিপুলেশনে সঠিক ফাংশন নির্বাচন করতে সহায়তা করবে, নির্ভর করে আপনি কী ধরনের ডেটা ম্যানিপুলেশন করতে চান।
Read more