Symbols এর সাথে Object Properties

Symbols - জাভাস্ক্রিপ্ট ইএস৬ (ES6) - Web Development

226

ES6 (ECMAScript 2015) এ Symbols একটি নতুন ডেটা টাইপ হিসেবে পরিচিতি পেয়েছে, যা বিশেষ ধরনের ইউনিক আইডেন্টিফায়ার তৈরি করতে ব্যবহৃত হয়। Symbols সাধারণত অবজেক্ট প্রোপার্টি হিসেবে ব্যবহার করা হয় এবং এটি এমন একধরনের primitive value যা অন্যান্য প্রোপার্টি নামের সাথে কনফ্লিক্ট করতে পারে না, কারণ প্রতিটি Symbol এর ভ্যালু একেবারে ইউনিক থাকে।


Symbol কী?

Symbol হলো একটি নতুন ডেটা টাইপ যা কোনো ভ্যালু রিপ্রেজেন্ট করে না, বরং একটি অনন্য এবং ইমিউটেবল (immutable) আইডেন্টিফায়ার তৈরি করে। এটি সাধারণত Symbol() ফাংশন ব্যবহার করে তৈরি করা হয়।

let symbol = Symbol('description');
console.log(symbol);  // Symbol(description)

এখানে, Symbol() ফাংশনটি একটি নতুন এবং ইউনিক Symbol তৈরি করছে, যার একটি ঐচ্ছিক বর্ণনা ("description") দেয়া হয়েছে।


Symbols এর বৈশিষ্ট্য

  1. ইউনিক আইডেন্টিফায়ার: প্রতিটি Symbol একেবারে আলাদা এবং ইউনিক থাকে, যার মানে একটির সাথে অন্যটির কোনো সম্পর্ক নেই।
  2. প্রাইভেট প্রোপার্টি: Symbols এর মাধ্যমে আপনি এমন প্রোপার্টি তৈরি করতে পারেন যা অন্যান্য কোডের সাথে কনফ্লিক্ট করবে না, কারণ Symbols কখনোই পুনরায় তৈরি করা যায় না।
  3. অ্যাক্সেসযোগ্য নয়: সাধারণ প্রোপার্টি বা ভ্যালু হিসাবে Symbols অজানা বা সরাসরি অ্যাক্সেস করা যায় না, যতক্ষণ না আপনি ঐ Symbol কে জানেন বা ব্যবহার করেন।

Symbols এর সাথে Object Properties

Symbols ব্যবহার করে আপনি একটি অবজেক্টের প্রোপার্টি তৈরি করতে পারেন, এবং এটি এমন একটি প্রোপার্টি হবে যা অন্যান্য কোডের দ্বারা সহজে ওভাররাইড বা অ্যাক্সেস করা যাবে না।

Symbols ব্যবহার করে Object Property তৈরি করা

const mySymbol = Symbol('id');

const person = {
  name: 'John',
  [mySymbol]: 12345  // Symbol এর মাধ্যমে প্রোপার্টি তৈরি
};

console.log(person.name);           // John
console.log(person[mySymbol]);      // 12345

এখানে, mySymbol একটি Symbol এবং এটি person অবজেক্টের প্রোপার্টি হিসেবে ব্যবহৃত হয়েছে। আপনি সাধারণভাবে person.mySymbol দ্বারা এটি অ্যাক্সেস করতে পারবেন না, কিন্তু person[mySymbol] দ্বারা আপনি এটি অ্যাক্সেস করতে পারবেন।


Symbols এবং Object এর মধ্যে পার্থক্য

  1. প্রাইভেসি: যখন আপনি একটি Symbol ব্যবহার করেন, তখন সেই প্রোপার্টি শুধুমাত্র সঠিক Symbol দ্বারা অ্যাক্সেস করা সম্ভব। অন্য কোনো কোড, যার কাছে ঐ Symbol নেই, সেটি ওই প্রোপার্টি অ্যাক্সেস করতে পারবে না।
  2. নেম স্পেসের কনফ্লিক্ট থেকে মুক্তি: অন্য কোডের দ্বারা অবজেক্টের প্রোপার্টি নামের কনফ্লিক্ট হতে পারে, তবে Symbol ব্যবহার করে এই সমস্যা এড়ানো যায়, কারণ Symbols সবসময় ইউনিক থাকে।

Symbols ব্যবহার করে Object এ Hidden Properties তৈরি করা

একটি সাধারণ প্রয়োগ হলো, আপনি কিছু "হিডেন" প্রোপার্টি তৈরি করতে পারেন যা অন্য কোডের দ্বারা সরাসরি অ্যাক্সেস করা যাবে না, কিন্তু এখনও সেই প্রোপার্টি আপনার অবজেক্টের অংশ হিসেবে থাকবে।

const hiddenKey = Symbol('hidden');
const user = {
  name: 'Alice',
  age: 30,
  [hiddenKey]: 'secret information'
};

console.log(user.name);        // Alice
console.log(user[hiddenKey]);  // secret information

এখানে, hiddenKey Symbol দ্বারা user অবজেক্টের একটি "হিডেন" প্রোপার্টি তৈরি করা হয়েছে। অন্য কোড সরাসরি এটি অ্যাক্সেস করতে পারবে না, কিন্তু user[hiddenKey] ব্যবহার করে আপনি এটি অ্যাক্সেস করতে পারবেন।


Symbols এবং Object.keys()

এটি মনে রাখা গুরুত্বপূর্ণ যে, Symbol এর মাধ্যমে তৈরি প্রোপার্টি সাধারণভাবে Object.keys(), for...in, এবং অন্যান্য লুপ মেথডের দ্বারা ধরা পড়ে না। তবে, Object.getOwnPropertySymbols() মেথড ব্যবহার করে আপনি Symbol প্রোপার্টিগুলো পেতে পারেন।

Example:

const sym1 = Symbol('sym1');
const sym2 = Symbol('sym2');

const obj = {
  [sym1]: 'value1',
  [sym2]: 'value2',
  regularProp: 'regular value'
};

// Object.keys() এটি দেখাবে না
console.log(Object.keys(obj));  // ["regularProp"]

// Object.getOwnPropertySymbols() এটি দেখতে পারবে
console.log(Object.getOwnPropertySymbols(obj));  // [Symbol(sym1), Symbol(sym2)]

এখানে, Object.keys() শুধুমাত্র সাধারণ প্রোপার্টি দেখাবে, কিন্তু Object.getOwnPropertySymbols() শুধুমাত্র Symbol প্রোপার্টি দেখাবে।


Symbols ES6 এর একটি শক্তিশালী বৈশিষ্ট্য, যা আপনাকে unique identifiers তৈরি করতে সহায়ক। এটি সাধারণ অবজেক্ট প্রোপার্টির সাথে কনফ্লিক্ট না করে গোপন বা প্রাইভেট প্রোপার্টি তৈরি করতে সুবিধা দেয়। বিশেষত, যখন আপনি কোনো কোডের মধ্যে কনফ্লিক্ট এড়াতে চান অথবা মডিউল ব্যবস্থায় প্রাইভেট ডেটা ব্যবহার করতে চান, তখন Symbols অত্যন্ত কার্যকরী।

Symbols এর মাধ্যমে আপনি কোডের নিরাপত্তা বাড়াতে পারেন এবং এটির সাহায্যে প্রোপার্টির নাম বা মানের পুনরাবৃত্তি এড়িয়ে একটি সংগঠিত ও নিরাপদ কোড বেস তৈরি করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...