Kết quả shape
của đoạn code sau là gì? Hãy giải thích tại sao?
Kết quả shape
của đoạn code sau là gì? Hãy giải thích tại sao?
const box = { x: 10, y: 20 };
Object.freeze(box);
const shape = box;
shape.x = 100;
console.log(shape);
{ x: 100, y: 20 }
{ x: 10, y: 20 }
{ x: 100 }
ReferenceError
Object.freeze
khiến cho chúng ta không thể thêm vào, xóa đi hay thay đổi bất kì thuộc tính nào của object (trừ phi giá trị của thuộc tính lại chính là một object khác).
Khi chúng ta tạo ra biến shape
và set cho nó giá trị bằng với một object đã được đóng băng là box
, thì shape
cũng sẽ trỏ tới một object đã được đóng băng. Ta có thể check một object có đang bị đóng băng hay không bằng Object.isFrozen
. Trong trường hợp này, Object.isFrozen(shape)
trả về true, vì shape
đang trỏ tới một object bị đóng băng.
Do đó, cộng với việc x
không phải là object, ta sẽ không thể thay đổi giá trị của x
. x
sẽ vẫn là 10
, và { x: 10, y: 20 }
được ghi ra.
middle
Gợi ý câu hỏi phỏng vấn
Chưa có bình luận nào