Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • JavaScript Documentation48টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • JavaScript কী?
  • Syntax & Comments
  • Variables
  • Data Types: Basics
  • Data Types: Conversion
  • Data Types: Advanced
  • Strings
  • Numbers & Math
  • Date & Time
  • Operators
  • Conditions
  • Loops
  • Functions: Basics
  • Functions: Intermediate
  • Functions: Advanced
  • Scope & Hoisting
  • Closures & this
  • ES6+ Modern
  • Arrays: Basics
  • Arrays: Intermediate
  • Arrays: Advanced
  • Objects: Basics
  • Objects: Intermediate
  • Objects: Advanced
  • Class: Basics
  • Class: Intermediate
  • Class: Advanced
  • DOM: Basics
  • DOM: Intermediate
  • DOM: Advanced
  • Events: Basics
  • Events: Intermediate
  • Events: Advanced
  • Async JavaScript
  • Promise
  • Async / Await
  • Fetch API
  • JSON
  • Modules
  • Browser Storage
  • Event Loop Deep
  • Prototype Chain
  • Iterators & Generators
  • WeakMap, WeakSet, Proxy
  • Error Handling
  • Practice Problems
  • Mini Projects
  • Basics
  • Functions & Scope
  • Types & Syntax
  • Arrays & Objects
  • Advanced
  • Functional Programming
  • Objects & Symbols
  • Async Deep Dive
  • Modern JavaScript
  1. Docs
  2. JavaScript
  3. প্রশ্ন/উত্তর
  4. Objects & Symbols
  5. Q38. What are Symbols in JavaScript and when should you use them?
JavaScriptObjects & Symbols

Q38. What are Symbols in JavaScript and when should you use them?

অদৃশ্য ও নিশ্চিতভাবে আলাদা key তৈরির উপায় — কোথায় এবং কেন ব্যবহার করবেন।

Symbol হলো একটি primitive data type যা একটি মানের identity তৈরি করে, কিন্তু মানটি সরাসরি দেখা যায় না। প্রতিটি Symbol() কল একেবারে আলাদা ও অদৃশ্য key বানায়, তাই কোড লিখে ভুলে যেতে পারেন না।

পরিচিতিjavascript
javascript
const id1 = Symbol("id");
const id2 = Symbol("id");

console.log(id1 === id2);              // false — description একই হলেও আলাদা
console.log(typeof id1);               // "symbol"
console.log(id1.toString());           // "Symbol(id)"

const user = { name: "Rahim" };
user[id1] = 101;

console.log(user[id1]);     // 101
console.log(Object.keys(user));    // ["name"] — symbol দেখা যায় না
console.log(JSON.stringify(user)); // {"name":"Rahim"}

ধাপে ধাপে — id1 ও id2-এর বর্ণনা দুটোই id, কিন্তু প্রতিটি Symbol() কল নতুন identity তৈরি করে, তাই দুটো কখনো সমান হয় না। আর Object.keys ও JSON.stringify শুধু string key দেখায়, তাই symbol key ওদের চোখে পড়ে না — এটাই Symbol-এর গোপন স্বভাব।

সবচেয়ে জনপ্রিয় ব্যবহার হলো object-এর method যেন কোনো কোড ইচ্ছাকৃতভাবে overwrite না করতে পারে।

নিরাপদ methodjavascript
javascript
const counter = {
  count: 0,

  increment() {
    this.count++;
  },
};

// ভুলে গিয়ে লেখা হলো
counter.increment = function () {
  this.count = 0;
};

// Symbol ব্যবহার করলে বাইরের কেউ ভুলে সেটা বদলাতে পারবে না
const safe = {
  count: 0,

  [Symbol.for("private.increment")]: function () {
    this.count++;
  },

  increment() {
    this[Symbol.for("private.increment")]();
  },
};

আরেকটি জনপ্রিয় জায়গা library ও class-এর private state রাখা। Symbol key বাইরের কোড খুঁজে দেখতে পারে না, তবে Object.getOwnPropertySymbols() দিয়ে খুঁজে বের করা যায়।

লুকানো তথ্যjavascript
javascript
const secret = Symbol("secret");

const vault = {
  [secret]: "গোপন তথ্য",
};

vault.secret = "অন্য কিছু"; // নতুন string key, আগেরটা অক্ষত

console.log(vault[secret]);   // "গোপন তথ্য"
console.log(Object.keys(vault)); // ["secret"]
জানা-অজানা methodjavascript
javascript
// জানা উপচীল method
const iterable = [1, 2, 3];

console.log(iterable[Symbol.iterator]);  // ফাংশন
console.log(typeof iterable.toString());   // "function"
console.log(typeof iterable.valueOf());     // "function"

// for...of আসলে এই method-ই ডাকে
console.log([...iterable]); // [1, 2, 3]

Symbol() আর Symbol.for()-এর পার্থক্য হলো — প্রথমটি সবসময় নতুন identity দেয়, আর দ্বিতীয়টি global registry থেকে একই নামের key ফেরত দেয়।

Symbol বনাম Symbol.forjavascript
javascript
const local = Symbol("key");

console.log(local === Symbol("key"));            // false
console.log(Symbol.for("key") === Symbol.for("key")); // true

একটি সাধারণ রীতি — key বারবার না লিখতে module-এর শুরুতে একবার const NAME = Symbol("name") বানিয়ে রাখা, তারপর সেটা ব্যবহার করা।

বিষয়SymbolString
দেখা যায়Object.keys-এ নাহ্যাঁ
JSON.stringifyথাকে নাথাকে
তুলনাidentity দিয়েvalue দিয়ে
পরিবর্তনযোগ্যনাহ্যাঁ
কখন ব্যবহার করবেন

Symbol ব্যবহার করুন যখন (১) কোনো property বাইরের কোড থেকে সুরক্ষিত রাখতে চান, (২) নিজস্ব type tag বানাতে চান, বা (৩) library-তে আপনার নতুন API যোগ করতে চান যাতে পুরোনো কোড না ভাঙে। প্রয়োজন না থাকলে সাধারণ string key-ই যথেষ্ট।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
Objects & Symbols বিভাগের আরও প্রশ্নJavaScript প্রশ্ন/উত্তর
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com