Ví dụ này tạo đối tượng, đóng băng đối tượng đó và sau đó tạo đối tượng mới từ đối tượng được cố định. Nếu đối tượng thứ hai cố gắng thay đổi thuộc tính thử nghiệm, nó không thể. Nó vẫn còn đông lạnh với giá trị đầu tiên đối tượng của 10.Tạo đối tượng mới từ đối tượng gốc được cố định
//Create an object and freeze it
var first = {
test: 10
};
Object.freeze(first);
//Create a second object from the first one and
//try and change the new test property (you can't)
var second = Object.create(first);
second.test = 20;
console.log(second.test); //10
Dưới đây là những câu hỏi của tôi:
là second.test
một tài sản mới trên một đối tượng mới, hoặc là nó chỉ là một tham chiếu đến bất động sản trong đông lạnh đối tượng đầu tiên?
Có thể sử dụng giá trị mặc định là first.test
, nhưng để second.test
ghi đè lên nếu cần?
Lý do yêu cầu của tôi là vì tôi muốn tạo một đối tượng cơ bản không thay đổi làm mẫu có giá trị mặc định và sau đó sử dụng nó để tạo đối tượng mới mà tôi có thể tùy chỉnh. Cách tiếp cận tốt nhất cho việc này là gì?
Cảm ơn!
Trường hợp khá bên ngoài, nhưng lưu ý rằng điều này vẫn không hoạt động nếu đối tượng cố định chứa tham chiếu đến các đối tượng được cố định khác và bạn cố ghi đè thuộc tính _their_. Vẫn là một kỹ thuật khá hữu ích cho các cấu trúc dữ liệu đơn giản, chỉ không ai có được ý tưởng rằng đó là một cách dễ dàng để tạo ra bất biến. – Dtipson