ভূমিকা
JavaScript-এ অবজেক্টের প্রপার্টি অ্যাক্সেস করার দুটি প্রধান পদ্ধতি রয়েছে: ডট নোটেশন (.) এবং ব্র্যাকেট নোটেশন ([])। এই আর্টিকেলে দুটির পার্থক্য, ব্যবহারিক উদাহরণ এবং কখন কোনটি ব্যবহার করা উচিত তা ব্যাখ্যা করা হয়েছে।
সম্পূর্ণ কোড উদাহরণ
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
body {
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
}
.result {
font-size: 20px;
font-weight: 500;
color: blueviolet;
}
</style>
</head>
<body>
<h1>JavaScript-এ ডট নোটেশন বনাম ব্র্যাকেট নোটেশন</h1>
<div class="result" id="result"></div>
<button class="Btn" id="btn">ক্লিক করুন</button>
<h3>উপরের বাটনে ক্লিক করলে student1 অবজেক্টের প্রপার্টিগুলো ডট ও ব্র্যাকেট নোটেশন দিয়ে অ্যাক্সেস করা হবে</h3>
<script>
let resEle = document.querySelector(".result");
let BtnEle = document.querySelector(".Btn");
function Student(name, age, standard) {
this.name = name;
this.age = age;
this.standard = standard;
}
let student1 = new Student("Rohan", 18, 12);
BtnEle.addEventListener("click", () => {
let str = "name",
str1 = "age",
str2 = "standard";
resEle.innerHTML = "ডট নোটেশন ব্যবহার <br>student1.name = " + student1.name + "<br>";
resEle.innerHTML += "student1.age = " + student1.age + "<br>";
resEle.innerHTML += "student1.standard = " + student1.standard + "<br><br>";
resEle.innerHTML += "ব্র্যাকেট নোটেশন ব্যবহার <br>student1[str] = " + student1[str] + "<br>";
resEle.innerHTML += "student1[str1] = " + student1[str1] + "<br>";
resEle.innerHTML += "student1[str2] = " + student1[str2] + "<br>";
});
</script>
</body>
</html>
ডট নোটেশন (Dot Notation)
const obj = { name: "John", age: 30 };
// সিনট্যাক্স: object.property
console.log(obj.name); // "John"
console.log(obj.age); // 30
ব্যবহারের সীমাবদ্ধতা
- প্রপার্টি নাম অবশ্যই বৈধ আইডেন্টিফায়ার হতে হবে (কোনো স্পেস, হাইফেন, বা সংখ্যা দিয়ে শুরু হতে পারবে না)
- প্রপার্টি নাম ডাইনামিকভাবে নির্ধারণ করা যায় না
ব্র্যাকেট নোটেশন (Bracket Notation)
const obj = { "first name": "John", "last-name": "Doe", 123: "number key" };
// সিনট্যাক্স: object["property"] বা object[variable]
console.log(obj["first name"]); // "John" (স্পেস থাকা প্রপার্টি)
console.log(obj["last-name"]); // "Doe" (হাইফেন থাকা প্রপার্টি)
console.log(obj[123]); // "number key" (সংখ্যা কী)
let prop = "name";
console.log(obj[prop]); // ডাইনামিক প্রপার্টি অ্যাক্সেস
সুবিধা
- যেকোনো স্ট্রিং প্রপার্টি নাম ব্যবহার করা যায় (স্পেস, বিশেষ অক্ষর, সংখ্যা)
- প্রপার্টি নাম ভেরিয়েবলে রাখে ডাইনামিক অ্যাক্সেস সম্ভব
- কম্পিউটেড প্রপার্টি নাম সাপোর্ট করে
তুলনামূলক টেবিল
| বিষয় | ডট নোটেশন | ব্র্যাকেট নোটেশন |
|---|---|---|
| পাঠযোগ্যতা | উচ্চ | মধ্যম |
| ডাইনামিক কী | না | হ্যাঁ |
| বিশেষ অক্ষর | না | হ্যাঁ |
| প্রদর্শন | थোড়া দ্রুত | थোড়া ধীর |
কখন কোনটি ব্যবহার করবেন
ডট নোটেশন ব্যবহার করুন যখন:
- প্রপার্টি নাম জানা থাকে এবং এটি বৈধ আইডেন্টিফায়ার
- কোড পাঠযোগ্যতা প্রাধান্য পায়
- স্ট্যাটিক প্রপার্টি অ্যাক্সেস
ব্র্যাকেট নোটেশন ব্যবহার করুন যখন:
- প্রপার্টি নাম ডাইনামিক (ভেরিয়েবলে থাকে)
- প্রপার্টি নামে স্পেস, হাইফেন, বা বিশেষ অক্ষর থাকে
- প্রপার্টি নাম সংখ্যা দিয়ে শুরু হয়
- লুপ বা ফাংশনে ডাইনামিকली প্রপার্টি অ্যাক্সেস করতে হয়
উদাহরণ: ডাইনামিক প্রপার্টি অ্যাক্সেস
const user = {
name: "John",
email: "john@example.com",
phone: "1234567890"
};
function getProperty(obj, propName) {
// ব্র্যাকেট নোটেশন ব্যবহার করা বাধ্যতামূলক
return obj[propName];
}
console.log(getProperty(user, "email")); // "john@example.com"
console.log(getProperty(user, "phone")); // "1234567890"
আউটপুট
বাটন ক্লিক করলে ডট এবং ব্র্যাকেট নোটেশন দুয়েই একই ফলাফল দেখাবে, কিন্তু ব্র্যাকেট নোটেশনটি ভেরিয়েবল ব্যবহার করে প্রপার্টি অ্যাক্সেস করেছে।