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. Q34. What is the difference between Object.freeze(), Object.seal(), and Object.preventExtensions()?
JavaScriptObjects & Symbols

Q34. What is the difference between Object.freeze(), Object.seal(), and Object.preventExtensions()?

তিনটি method object-এর নমনীয়তা কতটা কমায় — ভেতরের প্রপার্টি থেকে নতুন প্রপার্টি যোগ করা পর্যন্ত।

তিনটি method-ই object-কে পরিবর্তনের বিরুদ্ধে কিছুটা সুরক্ষিত করে, কিন্তু কতটা সুরক্ষা করে সেটা আলাদা। সহজ করে বলতে গেলে — preventExtensions নতুন প্রপার্টি আর ডিলিট বন্ধ করে, seal ডিলিটও বন্ধ করে, আর freeze ভেতরের মান বদলানোও বন্ধ করে দেয়।

preventExtensionsjavascript
javascript
const user = { name: "Rahim", age: 25 };

Object.preventExtensions(user);

user.role = "admin";    // নতুন প্রপার্টি — যোগ হবে না
console.log(user.role);  // undefined

user.name = "Karim";    // বর্তমান প্রপার্টি বদলাতে পারবে
console.log(user.name);   // "Karim"

// delete user.name;     // বন্ধ — কিন্তু delete চালালে false ফেরত দেয়

ধাপে ধাপে — preventExtensions চালানোর পরে user নতুন কোনো প্রপার্টি রাখতে রাজি নয়, তাই user.role = "admin" লিখলেও সেটা যোগ হয় না এবং পড়লে undefined মেলে। কিন্তু আগে থেকে থাকা name প্রপার্টি বদলানোর ওপর কোনো বাধা নেই।

sealjavascript
javascript
const user = Object.seal({ name: "Rahim", age: 25 });

user.name = "Karim";   // ✅ বদলানো যায়
user.role = "admin";   // ❌ নতুন প্রপার্টি যোগ হয় না
// delete user.name;    // ❌ ডিলিটও করা যায় না

console.log(user);        // { name: "Karim", age: 25 }
freezejavascript
javascript
const user = Object.freeze({ name: "Rahim", age: 25 });

user.name = "Karim";   // ❌ নীরবে ব্যর্থ হয়
console.log(user.name);  // "Rahim" — আগের মানই আছে

user.role = "admin";   // ❌ যোগ হয় না
// delete user.name;    // ❌ ডিলিট হয় না

console.log(Object.isFrozen(user)); // true

freeze ব্যবহারের সময় একটা গুরুত্বপূর্ণ বিষয় জানা দরকার — strict mode-এ বদলানোর চেষ্টা করলে error পড়ে, আর সাধারণ মোডে নীরবে ব্যর্থ হয়। তাই const দিয়ে বাঁধা object-এ freeze করলে ভুল ধরা পড়ে।

strict mode-এ errorjavascript
javascript
"use strict";

const user = Object.freeze({ name: "Rahim" });

user.name = "Karim"; // TypeError: Cannot assign to read only property
freeze শুধু shallowjavascript
javascript
// shallow — ভেতরের nested object বদলানো যায়
const settings = Object.freeze({
  theme: "dark",
  nested: { count: 1 },
});

settings.theme = "light";      // ❌ বদলায় না
settings.nested.count = 2;      // ✅ বদলায়! freeze শুধু এক স্তরের

console.log(settings.nested.count); // 2
Methodপ্রপার্টি বদলানোপ্রপার্টি যোগপ্রপার্টি ডিলিটভেতরের nested
preventExtensionsযায়যায় নাযায় নাবদলায়
sealযায়যায় নাযায় নাবদলায়
freezeযায় নাযায় নাযায় নাবদলায়
মজার তথ্য

Object.freeze করলে সেই object-ই Object.prototype-এর বাইরে immutable হয়ে যায়, তাই এটি const-এর চেয়েও কঠোর — const শুধু reference বদলাতে বাঁধে, freeze প্রপার্টিও বদলাতে বাঁধে। চেক করতে Object.isFrozen, Object.isSealed, Object.isExtensible ব্যবহার করুন।

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

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

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

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

mdanamolhasan1998@gmail.com