ES6-এ Object.freeze() এবং Object.seal() দুটি মেথড এসেছে, যেগুলো ব্যবহার করে আপনি অবজেক্টের পরিবর্তন (mutation) সীমাবদ্ধ করতে পারেন। এই মেথডগুলোর মাধ্যমে অবজেক্টের প্রপার্টি বা স্ট্রাকচারের সুরক্ষা নিশ্চিত করা যায়, যাতে অবজেক্টটি অনাকাঙ্ক্ষিত পরিবর্তন থেকে রক্ষা পায়।
Object.freeze()
Object.freeze() মেথডটি একটি অবজেক্টকে সম্পূর্ণরূপে immutable (অপরিবর্তনীয়) করে তোলে। এর মাধ্যমে, অবজেক্টের প্রপার্টি এবং এর ভ্যালু কোনভাবেই পরিবর্তন করা যাবে না, এবং অবজেক্টের নতুন প্রপার্টি যোগ করা বা মুছে ফেলা সম্ভব হবে না।
সিনট্যাক্স:
Object.freeze(obj);
- obj: যে অবজেক্টটিকে আপনি "ফ্রিজ" করতে চান, অর্থাৎ সেটিকে অপরিবর্তনীয় (immutable) বানাতে চান।
উদাহরণ:
const person = {
name: "Alice",
age: 25
};
Object.freeze(person);
person.age = 30; // কাজ করবে না
person.gender = "female"; // কাজ করবে না
console.log(person.age); // Output: 25
console.log(person.gender); // Output: undefined
এখানে, Object.freeze() ব্যবহৃত হয়েছে যাতে person অবজেক্টের কোনো প্রপার্টি পরিবর্তন বা নতুন প্রপার্টি যোগ করা না যায়।
Object.seal()
Object.seal() মেথডটি একটি অবজেক্টকে সীল (seal) করে, তবে এটি সম্পূর্ণরূপে immutable (অপরিবর্তনীয়) করে তোলে না। Object.seal() ব্যবহারের পর, আপনি অবজেক্টের প্রপার্টি মান পরিবর্তন করতে পারবেন, কিন্তু নতুন প্রপার্টি যোগ করা বা বিদ্যমান প্রপার্টি মুছে ফেলা সম্ভব হবে না।
সিনট্যাক্স:
Object.seal(obj);
- obj: যে অবজেক্টটি আপনি সীল করতে চান, অর্থাৎ নতুন প্রপার্টি যোগ বা মুছে ফেলা আটকাতে চান।
উদাহরণ:
const person = {
name: "Bob",
age: 30
};
Object.seal(person);
person.age = 35; // এটা সম্ভব
person.gender = "male"; // কাজ করবে না
delete person.name; // কাজ করবে না
console.log(person.age); // Output: 35
console.log(person.gender); // Output: undefined
console.log(person.name); // Output: "Bob"
এখানে, Object.seal() ব্যবহৃত হয়েছে যাতে person অবজেক্টে নতুন প্রপার্টি যোগ বা বিদ্যমান প্রপার্টি মুছে ফেলা না যায়, কিন্তু এর মান পরিবর্তন করা সম্ভব।
Object.freeze() এবং Object.seal() এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Object.freeze() | Object.seal() |
|---|---|---|
| প্রপার্টি পরিবর্তন | সম্ভব নয় | সম্ভব |
| নতুন প্রপার্টি যোগ | সম্ভব নয় | সম্ভব নয় |
| প্রপার্টি মুছে ফেলা | সম্ভব নয় | সম্ভব নয় |
Object.freeze() অবজেক্টের সমস্ত প্রপার্টি এবং তার মান অপরিবর্তনীয় (immutable) করে তোলে, অর্থাৎ সেটি সম্পূর্ণভাবে পরিবর্তন করা যাবে না। অন্যদিকে, Object.seal() শুধুমাত্র নতুন প্রপার্টি যোগ করা এবং বিদ্যমান প্রপার্টি মুছে ফেলা আটকায়, তবে প্রপার্টির মান পরিবর্তন সম্ভব।
কীট বুঝতে হবে:
Object.freeze()সাধারণত ব্যবহৃত হয় যখন আপনি নিশ্চিত করতে চান যে অবজেক্টের কোনো পরিবর্তন করা হবে না এবং অবজেক্টটি সম্পূর্ণ অপরিবর্তনীয় থাকবে।Object.seal()ব্যবহার করা হয় যখন আপনি অবজেক্টের গঠন বজায় রাখতে চান, তবে কিছু প্রপার্টির মান পরিবর্তন করা যেতে পারে।
এই মেথডগুলো সাধারণত ব্যবহৃত হয় কোডের নিরাপত্তা এবং এক্সটেনশন সুরক্ষা নিশ্চিত করার জন্য, যাতে অন্য কোনো কোড অবজেক্টে অনাকাঙ্ক্ষিত পরিবর্তন না করতে পারে।
Read more