কম্পিউটার টিউটোরিয়াল

JavaScript-এ ডট নোটেশন বনাম ব্র্যাকেট নোটেশন: পার্থক্য ও ব্যবহার

ভূমিকা

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"

আউটপুট

বাটন ক্লিক করলে ডট এবং ব্র্যাকেট নোটেশন দুয়েই একই ফলাফল দেখাবে, কিন্তু ব্র্যাকেট নোটেশনটি ভেরিয়েবল ব্যবহার করে প্রপার্টি অ্যাক্সেস করেছে।

  1. জাভাস্ক্রিপ্ট Random - ম্যাথ.র‍্যান্ডম()

  2. জাভাস্ক্রিপ্ট Promises - অ্যাসিঙ্ক্রোনাস অপারেশন

  3. জাভাস্ক্রিপ্ট WeakSet

  4. জাভাস্ক্রিপ্টে ডট নোটেশন