Object.freeze trong JavaScript và cách đóng băng object | Laptrinhcanban.com

Object.freeze trong JavaScript và cách đóng băng object

Hướng dẫn cách sử dụng Object.freeze trong JavaScript. Bạn sẽ học được cách sử dụng Object.freeze để đóng băng các đối tượng JavaScript sau bài học này.

Object.freeze trong JavaScript

Object.freeze trong JavaScript là một phương thức trong object Object, có tác dụng đóng băng một object và ngăn chặn không cho thực thi các xử lý làm thay đổi object như thêm, sửa, xóa object.

Chúng ta sử dụng phương thức freeze để đóng băng object trong JavaScript như sau:

Object.freeze(obj);

Trong đó obj là object cần đóng băng và ngăn chặn các xử lý thay đổi nó.

Sau khi thực thi Object.freeze trong JavaScript, mọi hành động làm thay đổi object bao gồm cả thêm xóa hoặc thay đổi giá trị của thuộc tính ban đầu của object đều không thể thực thi. Và khi đó object sẽ giống như một hằng số mà chúng ta không thể thay đổi giá trị của nó.

Đóng băng object trong javasript bằng Object.freeze

Tác dụng chính của Object.freeze chính là đóng băng và ngăn cản mọi hành động làm thay đổi object ban đầu.

Ví dụ cụ thể, chúng ta có thể thay đổi một object như sau:

let user = {
name:'Kiyoshi',
age:30,
address:'Tokyo'
};
console.log('user=',user);
//user= { name: 'Kiyoshi', age: 30, address: 'Tokyo' }

user.age = 20;
console.log('user=',user);
//user= { name: 'Kiyoshi', age: 20, address: 'Tokyo' }

Bạn có thể thấy thuộc tính age với giá trị 30 đã được thay đổi giá trị thành 20 như trên.

Tuy nhiên nếu chúng ta sử dụng Object.freeze để đóng băng object này lại, các xử lý thay đổi trên sẽ đều không thể thực thi như sau:

let user = {
name:'Kiyoshi',
age:30,
address:'Tokyo'
};

Object.freeze(user);

user.age = 20;
console.log('user=',user);
// user= { name: 'Kiyoshi', age: 30, address: 'Tokyo' }

Có thể thấy rõ, do object đã bị đóng băng, nên kể cả bạn cố thay đổi giá trị của thuộc tính age, thì nó vẫn giữ nguyên giá trị ban đầu bằng 30 mà thôi.

Một cách tương tự, với các Xử lý object trong javascript có thể làm thay đổi một object như là thêm hoặc xóa thì nếu object ban đầu đã bị đóng băng, thì mặc dù chúng ta viết lệnh đi chăng nữa thì object ban đầu cũng không hề bị thay đổi như sau:

let user = {
name:'Kiyoshi',
age:30,
address:'Tokyo'
};

Object.freeze(user);

//Thêm thuộc tính
user.gender = 'male';


//Xóa thuộc tính
delete user.age;

console.log('user=',user);
// user= { name: 'Kiyoshi', age: 30, address: 'Tokyo' }

Lưu ý khi đóng băng object bằng Object.freeze khi sử dụng trong strict mode

Khi chạy JavaScript trong strict mode, lưu ý là chúng ta không thể sử dụng Object.freeze để đóng băng object, vì lỗi sẽ xảy ra như sau:

'use strict';
let user = {
name:'Kiyoshi',
age:30,
address:'Tokyo'
};

Object.freeze(user);
user.gender = 'male';
>>> Uncaught TypeError: Cannot assign to read only property 'gender' of object '#<Object>'

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về cách đóng băng object trong JavaScript bằng Object.freeze rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về JavaScript trong các bài học tiếp theo.

Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.