লিস্ট ডেটা সংরক্ষণের একটি উপযোগী পদ্ধতি হলেও, যখন আপনি একটি লিস্টে কোনো নির্দিষ্ট অবজেক্টের একাধিক প্রপার্টি সংরক্ষণ করতে চান তবে এটি অসুবিধাজনক। উদাহরণস্বরূপ, একটি কুকি স্টোরে বিক্রয় হওয়া সব কুকির ডেটা সংরক্ষণ করতে চাইলে আপনাকে একাধিক লিস্ট তৈরি করতে হবে।
এখানেই অবজেক্টের প্রয়োজন পড়ে। অবজেক্ট আপনাকে নাম:মান (name:value) জোড়ায় ডেটা সংরক্ষণ করতে দেয়, অর্থাৎ আপনি আপনার অ্যাপ্লিকেশনে সংরক্ষিত ডেটার সাথে লেবেল যোগ করতে পারেন।
এই গাইডে আমরা অবজেক্ট কী, এবং কীভাবে আপনি আপনার কোডে এটি ব্যবহার করতে পারেন সে সম্পর্কে আলোচনা করব। আমরা জাভাস্ক্রিপ্ট প্রোগ্রামিং ভাষায় অবজেক্ট তৈরি করা, মডিফাই করা এবং ডিলিট করা নিয়ে কথা বলব।
অবজেক্ট কী?
অবজেক্ট জাভাস্ক্রিপ্টের একটি ডেটা টাইপ। এটি শূন্য বা অধিক নাম এবং মানের সমষ্টি থেকে গঠিত যা জোড়া হয়ে থাকে। প্রতিটি নাম একটি মানের জন্য লেবেল হিসেবে কাজ করে। এর মানে যদি আপনি একটি অবজেক্টে কোনো নির্দিষ্ট মান এক্সেস করতে চান, তবে আপনাকে শুধু তার লেবেলটি রেফারেন্স করতে হবে। নামগুলিকে কখনও কখনও "কী" (keys) বলা হয়।
একটি মান যেকোনো ধরনের ডেটা ধারণ করতে পারে—স্ট্রিং, নম্বর বা অপর একটি অবজেক্ট। মানগুলিতে প্রপার্টি ও মেথডও থাকতে পারে, যেগুলো সেই নির্দিষ্ট অবজেক্টের ऊपर প্রযোজ্য ফাংশন।
কী এবং মান একসাথে ম্যাপ হয়ে একটি জেএস অবজেক্টে কী:ভ্যালু জোড়া তৈরি করে।
জাভাস্ক্রিপ্ট অবজেক্ট হলো সেই কনসেপ্ট যার ওপর JSON (JavaScript Object Notation) নির্মিত। JSON জাভাস্ক্রিপ্ট থেকে কিছুটা আলাদা হলেও, এই দুটি ডেটা স্ট্রাকচারই ডেটা সংরক্ষণের জন্য নাম:ভ্যালু জোড়ার পদ্ধতি ব্যবহার করে।
অবজেক্ট কীভাবে তৈরি করবেন
অবজেক্ট তৈরি করার দুটি পদ্ধতি রয়েছে। আপনি অবজেক্ট কনস্ট্রাক্টর পদ্ধতি ব্যবহার করতে পারেন বা অবজেক্ট লিটারেল ডিক্লেয়ার করতে পারেন।
অবজেক্ট কনস্ট্রাক্টর "new" কীওয়ার্ড ব্যবহার করে একটি নতুন অবজেক্ট তৈরি করে:
const cookie = new Object();
এটি একটি খালি অবজেক্ট তৈরি করে যাতে আমরা মান যোগ করতে পারি। আমরা অবজেক্ট লিটারেল সিন্ট্যাক্স দিয়েও একটি অবজেক্ট ডিক্লেয়ার করতে পারি, যা শুধু একটি কার্লি ব্র্যাকেট সেট:
const cookie = {};
উপরের দুটি উদাহরণে আমরা একটি খালি অবজেক্ট তৈরি করেছি। জাভাস্ক্রিপ্ট অ্যাপ্লিকেশনে এই দুটি পদ্ধতিই একে অপরের স্থানে ব্যবহার করা হয়। অবজেক্ট লিটারেল পদ্ধতিটি সম্ভবত আরও সাধারণ, কারণ এর সহজতর—শুধু একটি কার্লি ব্র্যাকেট সেট তৈরি করলেই হয়।
ডেটা সহ একটি অবজেক্ট তৈরি করতে আমরা অবজেক্ট লিটারেল সিন্ট্যাক্স ব্যবহার করতে পারি:
const raspberry_white_choc = { name: "Raspberry White Chocolate Chip", price: 1.50, available: true, stock: 42 }
এই অবজেক্টে চারটি নাম এবং মান রয়েছে। উদাহরণস্বরূপ, "price" লেবেলটি ফ্লোটিং-পয়েন্ট নম্বর ১.৫০ এর সাথে যুক্ত। "available" লেবেলটি বুলিয়ান মান "true" এর সাথে যুক্ত।
অবজেক্ট কীভাবে পড়বেন
আমরা এখন পর্যন্ত অবজেক্ট তৈরি করার কথা বলেছি, কিন্তু আপনি যদি এর কন্টেন্ট এক্সেস না করতে পারেন তবে অবজেক্ট কোনো কাজের নয়। একটি অবজেক্টের কন্টেন্ট পড়ার দুটি পদ্ধতি রয়েছে। আপনি ডট নোটেশন (.) বা ব্র্যাকেট নোটেশন ([]) যেকোনো একটি ব্যবহার করতে পারেন।
মান লেইয়া আমরা আমাদের চকলেট চিপ কুকির নামটি রিট্রিভ করতে চাই। আমরা নিচের কোড দিয়ে এটি করতে পারি:
console.log(raspberry_white_choc.name);
এই কোড রিটার্ন করবে: Raspberry White Chocolate Chip। আমাদের উদাহরণে, আমরা আমাদের অবজেক্টের নাম—"raspberry_white_choc"—রেফারেন্স করেছি, তারপর একটি ডট, তারপর সেই প্রপার্টির নাম যার মানটি আমরা পেতে চাই। এটাই ডট নোটেশন বলে। অবজেক্ট এবং প্রপার্টির নামের মাঝপথে একটি ডট রয়েছে।
আপনি ব্র্যাকেট নোটেশন দিয়েও একটি অবজেক্ট পড়তে পারেন:
console.log(raspberry_white_choc["available"]);
আমাদের কোড রিটার্ন করবে: true। ব্র্যাকেট নোটেশন হলো যেখানে আপনি একটি অবজেক্টের নাম নির্দিষ্ট করেন, তারপর আপনি যে মানের নামটি পেতে চান সেটি উদ্ধৃতি চিহ্নে ঢেকে স্কোয়ার ব্র্যাকেটের ভিতরে রাখেন।
অবজেক্ট কীভাবে মডিফাই করবেন
একটি অবজেক্ট মডিফাই করার তিনটি সম্ভাব্য পদ্ধতি রয়েছে:
- অবজেক্টে আইটেম যোগ করা
- মৌজূদা অবজেক্ট আইটেম মডিফাই করা
- অবজেক্ট থেকে আইটেম রিমুভ করা
আমরা আগের কুকির উদাহরণের রেফারেন্স দিয়ে এগুলো একে একে আলোচনা করব।
অবজেক্টে আইটেম যোগ করা
লিস্টের ভালো, অবজেক্টে মান যোগ করার জন্য কোনো push() বা append() ফাংশন নেই। আপনাকে শুধু অ্যাসাইনমেন্ট অপারেটর ব্যবহার করে একটি নতুন মান একটি প্রপার্টিতে অ্যাসাইন করতে হবে।
মান লেইয়া আমরা আমাদের অবজেক্টে "gluten_free" মানটি যোগ করতে চাই। আমরা নিচের যেকোনো একটি স্টেটমেন্ট দিয়ে এটি করতে পারি:
// ব্র্যাকেট নোটেশন ব্যবহার করে raspberry_white_choc["gluten_free"] = false; console.log(raspberry_white_choc.gluten_free); // ডট নোটেশন ব্যবহার করে raspberry_white_choc.gluten_free = false; console.log(raspberry_white_choc.gluten_free);
আমাদের কোড রিটার্ন করবে:
false false
উভয় উদাহরণেই, আমরা আমাদের অবজেক্টে "gluten_free" নামে একটি নতুন আইটেম তৈরি করেছি। এই আইটেমে আমরা যে মানটি অ্যাসাইন করেছি সেটি "false"।
মৌজূদা অবজেক্ট আইটেম মডিফাই করা
একটি অবজেক্টের কন্টেন্ট পরিবর্তন করা অবজেক্টে নতুন মান অ্যাসাইন করার মতোই কাজ করে। দুটি পদ্ধতিই অ্যাসাইনমেন্ট অপারেটর ব্যবহার করে অবজেক্টটি মডিফাই করে।
মান লেইয়া আমরা আমাদের রাসবেরি হ্বাইট চকলেট চিপ কুকির রেসিপি পরিবর্তন করেছি এবং এখন এটি গ্লুটেন-ফ্রি। আমরা নিচের কোড দিয়ে আমাদের অবজেক্টের "gluten_free" আইটেমটি পরিবর্তন করতে পারি:
raspberry_white_choc.gluten_free = true; console.log(raspberry_white_choc.gluten_free);
আমাদের কোড রিটার্ন করবে: true। আপনি পছন্দ করলে ব্র্যাকেট নোটেশনও ব্যবহার করতে পারেন।
অবজেক্ট থেকে আইটেম রিমুভ করা
"delete" কীওয়ার্ড আপনাকে একটি অবজেক্ট থেকে একটি প্রপার্টি রিমুভ করতে দেয়। নিচের কোড আমাদের অবজেক্ট থেকে "gluten_free" প্রপার্টিটি ডিলিট করতে দেয়:
delete raspberry_white_choc.gluten_free; console.log(raspberry_white_choc);
আমাদের কোড রিটার্ন করবে:
{ available: true, name: "Raspberry White Chocolate Chip", price: 1.5, stock: 42 }
আপনি দেখতে পাচ্ছেন, "gluten_free" নামটি আর আমাদের অবজেক্টে নেই। এর কারণ হলো আমরা delete কীওয়ার্ড ব্যবহার করে এটি রিমুভ করেছি।
উপসংহার
জাভাস্ক্রিপ্ট অবজেক্ট স্ট্রাকচার সম্পর্কিত ডেটা সংরক্ষণ করা সহজ করে তোলে। এই আর্টিকেলে আমরা একটি কুকি স্টোরের কুকির তথ্য সংরক্ষণের জন্য অবজেক্ট কীভাবে ব্যবহার করা যায় সে সম্পর্কে আলোচনা করেছি। আমরা ইউজার অ্যাকাউন্ট, বেকারির রেসিপি বা ক্যালেন্ডার এনগেজমেন্ট সংরক্ষণের জন্যও অবজেক্ট ব্যবহার করতে পারতাম।