Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Ngăn chặn thay đổi thuộc tính object với Object.freeze() trong JavaScript

Object.freeze() làm object bất biến: không thể thêm/sửa/xóa thuộc tính, không thể thay đổi prototype.

Ví dụ

const frozenObj = {value1: 10, value2: 20};
Object.freeze(frozenObj);

// Thử thay đổi
frozenObj.value1 = 100;
frozenObj.newProp = "test";
delete frozenObj.value2;

console.log("value1:", frozenObj.value1);    // Vẫn là 10
console.log("newProp:", frozenObj.newProp);  // undefined
console.log("value2:", frozenObj.value2);    // Vẫn là 20

Cách chạy

node demo.js

Kết quả

value1: 10
newProp: undefined
value2: 20

Lưu ý: freeze() chỉ shallow (1 cấp). Object lồng bên trong vẫn có thể sửa. Dùng deepFreeze đệ quy cho deep freeze.

Strict mode: Trong strict mode, gán giá trị cho frozen object sẽ ném TypeError.