class AbstractClass {
constructor() {
}
set property(value) {
this.property_ = value;
}
get property() {
return this.property_;
}
}
class Subclass extends AbstractClass {
constructor() {
super();
}
set property(value) {
super.property = value;
if (!(this.property_ instanceof SubclassAssociatedClass)) throw new TypeError();
}
//get property() {
// return super.property;
//}
}
Override phương pháp set
của một thuộc tính và nó xuất hiện phương pháp get
phải được ghi đè cũng, nếu không undefined
được trả lại (ví dụ, phương pháp get
không được thừa hưởng, bỏ ghi chú phương thức phân lớp get property()
ở trên và mọi thứ hoạt động tốt).Override một setter và getter cũng phải được ghi đè
Tôi giả định đây là một phần của thông số, nó sẽ theo mặc dù có thể nếu hành vi là hậu quả của việc biên dịch chéo. Chỉ cần chắc chắn, đây có phải là cách chính xác để mã những người định cư bị ghi đè và getters (cả hai cùng một lúc hoặc không phải ở tất cả)?
Bạn có thể chỉnh sửa ví dụ của mình để setter/getter không chỉ gọi là siêu sao? – Bergi
Điều này có thể hữu ích: http://stackoverflow.com/questions/27400010/object-prototype-definegetter-and-definesetter-polyfill/27400162#27400162. Nó thảo luận vấn đề về '__defineGetter__' vv, nhưng nguyên tắc là như nhau: nếu bạn định nghĩa/xác định lại setter trên thuộc tính đã có getter, bạn cần lấy getter và reset nó cùng với setter . –