Truy vấn và thiết lập các đặc tính Javascript (phần 6)

Kế thừa (tiếp tục)

Phép gán đặc tính thẩm định móc xích prototype để quyết định liệu phép gán có được phép. Nếu o kế thừa một đặc
tính chỉ đọc tên x, ví dụ, thì phép gán là không được phép (Các chi tiết về khi nào một đặc tính có thể được thiết
lập ở trong các học phần sau). Nếu phép gán là được phép, tuy nhiên, nó luôn tạo hay thiết lập một đặc tính trong
object gốc và không bao giờ điều chỉnh các objects trong móc xích prototype. Thực tế rằng kế thừa xảy ra khi truy
vấn các đặc tính nhưng không khi thiết lập chúng là một đặc tính then chốt của Javascript vì nó cho phép chúng ta
ghi đè có lựa chọn các đặc tính kế thừa:

let unitcircle = { r: 1 }; // An object to inherit from
let c = Object.create(unitcircle); // c inherits the property r
c.x = 1; c.y = 1; // c defines two properties of its own
c.r = 2; // c overrides its inherited property
unitcircle.r // => 1: the prototype is not affected

Có một ngoại lệ đối với quy tắc cái một phép gán đặc tính hoặc thất bại hoặc tạo hoặc thiết lập một đặc tính
trong object gốc. Nếu o kế thừa đặc tính x, và đặc tính đó là một đặc tính truy cập với một phương thức setter,
(xem các học phần sau), thì phương thức setter đó được gọi hơn là tạo một đặc tính mới x trong o. Chú ý, tuy
nhiên, rằng phương thức setter được gọi trên object o, không trên prototype object cái định nghĩa đặc tính, nên
nếu phương thức setter định nghĩa bất cứ đặc tính nào, nó sẽ làm trên o, và nó sẽ lại một lần nữa để lại móc
xích prototype không bị điều chỉnh.

Chia sẻ