const person = {
name: "JtsCode",
age: 29
};
Object.freeze(person);
person.age = 20; // ❌ بیتأثیره
person.city = "isfahan"; // ❌ افزوده نمیشه
console.log(person); // همچنان فقط name و age با مقدار اولیه💡 نکته: Object.freeze() فقط سطح اول آبجکت رو فریز میکنه. یعنی اگر داخل آبجکت، آبجکت دیگهای باشه (nested object)، اون هنوز قابل تغییره مگر اینکه اون هم جداگانه فریز بشه.
اگر بخوای یه آبجکت کاملاً غیر قابل تغییر بسازی حتی برای سطوح تو در تو، باید از یه تابع بازگشتی استفاده کنی که همهی لایهها رو فریز کنه:
🔒 فریز کامل (deep freeze):
function deepFreeze(obj) {
Object.freeze(obj);
for (const key in obj) {
if (
typeof obj[key] === "object" &&
obj[key] !== null &&
!Object.isFrozen(obj[key])
) {
deepFreeze(obj[key]);
}
}
return obj;
}