Trong JavaScript, hai khái niệm Object.freeze()const thường xuyên gây nhầm lẫn cho các lập trình viên. Tuy nhiên, chúng có sự khác nhau rõ ràng về cách thức hoạt động và mục đích sử dụng. Hãy cùng tìm hiểu chi tiết!

Object.freeze() là gì?

Object.freeze() là một phương thức trong JavaScript được sử dụng để đóng băng (freeze) một đối tượng. Khi một đối tượng bị đóng băng, bạn không thể thay đổi thuộc tính của đối tượng đó – không thể thêm mới, sửa đổi hoặc xoá thuộc tính hiện tại.

Ví dụ cơ bản về Object.freeze()

// Tạo đối tượng ban đầu
let obj = {
    name: "John",
    age: 30
};

// Đóng băng đối tượng
Object.freeze(obj);

// Cố gắng thay đổi thuộc tính
obj.age = 35; // Không có hiệu lực
obj.city = "New York"; // Không có hiệu lực

console.log(obj); // Kết quả: {name: "John", age: 30}

Chú thích

Khi sử dụng Object.freeze(), đối tượng bên trong sẽ không thay đổi giá trị. Dù bạn có cố gắng thay đổi giá trị thuộc tính hay thêm mới thuộc tính, JavaScript sẽ bỏ qua và giữ nguyên trạng thái của đối tượng.

const là gì?

const là một từ khóa trong JavaScript, dùng để khai báo biến mà giá trị của nó không thể thay đổi sau khi đã được gán giá trị ban đầu.

Ví dụ cơ bản về const

// Khai báo biến const
const myAge = 25;

try {
    // Cố gắng thay đổi giá trị
    myAge = 30; // Gây ra lỗi
} catch (e) {
    console.log("Gặp lỗi: " + e.message); // Kết quả: Assignment to constant variable.
}

Chú thích

Khi bạn khai báo biến với const, bạn không thể thay đổi giá trị của biến đó. Nếu cố gắng gán giá trị mới cho biến, JavaScript sẽ ném ra lỗi.

Điểm khác nhau giữa Object.freeze()const

Để hiểu rõ hơn sự khác nhau giữa Object.freeze()const, chúng ta hãy xem xét một ví dụ chi tiết hơn.

Ví dụ chuyên sâu

// Khai báo đối tượng với const
const person = {
    name: "John",
    age: 30
};

// Thay đổi thuộc tính của đối tượng - Điều này hoàn toàn hợp lệ
person.age = 35;

console.log(person); // Kết quả: {name: "John", age: 35}

// Sử dụng Object.freeze() để đóng băng đối tượng
Object.freeze(person);

// Cố gắng thay đổi thuộc tính một lần nữa
person.age = 40; // Không có hiệu lực
person.city = "Paris"; // Không có hiệu lực

console.log(person); // Kết quả: {name: "John", age: 35}

Chú thích

Dù đối tượng được khai báo bằng const, bạn vẫn có thể thay đổi các thuộc tính bên trong đối tượng đó. Tuy nhiên, sau khi sử dụng Object.freeze(), mọi thay đổi lên đối tượng đều bị vô hiệu hóa.

Kết luận

Object.freeze()const đều hữu ích trong việc kiểm soát sự thay đổi của dữ liệu trong JavaScript, nhưng chúng có mục đích và phương thức hoạt động khác nhau hoàn toàn. const bảo vệ biến không bị gán lại giá trị mới, trong khi Object.freeze() bảo vệ giá trị đối tượng không bị thay đổi.

Hi vọng sau bài viết này, bạn đã nắm rõ hơn về sự khác nhau giữa Object.freeze()const trong JavaScript và sử dụng chúng một cách hiệu quả trong lập trình.