Tạo các objects Javascript (phần 4)

Object.create()

Object.create() tạo một object mới, sử dụng đối số đầu tiên của nó như prototype của object đó:

let o1 = Object.create({x: 1, y: 2}); // o1 inherits properties x and y.
o1.x + o1.y // => 3

Bạn có thể truyền null để tạo một object mới cái không có một prototype, nhưng nếu bạn làm cái này, object tạo
mới sẽ không thừa kế bất cứ thứ gì, thậm chí các phương thức cơ bản như toString() (cái có nghĩa nó sẽ không
làm việc với toán toán +):

let o2 = Object.create(null); // o2 inherits no props or methods.

Nếu bạn muốn tạo một object rỗng thông thường (như object trả về bởi { } hay new Object()), truyền Object.prototype:

let o3 = Object.create(Object.prototype); // o3 is like {} or new Object().

Khả năng tạo một object mới với một prototype tùy biến là một cái mạnh mẽ, và chúng ta sẽ sử dụng Object.create()
trong một số nơi xuyên suốt học phần này. (Object.create() cũng lấy một đối số thứ hai tùy chọn cái mô tả các
đặc tính của object mới. Đối số thứ hai này là một đặc tính tiên tiến khái quát trong học phần sau.)
Một việc sử dụng cho Object.create() là khi bạn muốn bảo vệ khỏi điều chỉnh không định trước (nhưng không độc hại)
của một object bởi một hàm thư viện cái bạn không có kiểm soát trên. Thay vì truyền object trực tiếp tơi hàm, bạn
có thể truyền một object cái thừa kế từ nó. Nếu hàm đọc các đặc tính của object đó, nó sẽ thấy các giá trị được
thừa kế. Nếu nó thiết lập các đặc tính, tuy nhiên, những viêt đó sẽ không ảnh hưởng object gốc.

let o = { x: “don’t change this value” };
library.function(Object.create(o)); // Guard against accidental modifications

Để hiểu tại sao cái này làm việc, bạn cần biết các đặc tính được truy vấn và thiết lập như thế nào trong Javascript.
Những cái này là chủ đề của phần tiếp theo.

Chia sẻ