Проблема
Я пытаюсь создать два класса, где один является подклассом другого, и заполнить частные переменные в конструкторе с помощью метода fill. Однако при использовании метода fill для заполнения личных переменных родительского класса эти переменные исчезают при инициализации подкласса.
class RequestFile {
constructor (args = {}) {
// this.to = args.to ? args.to : []
// this.files = args.files ? args.files : []
// this.body = args.body ? args.body : ''
}
fill ({to=[],files=[], subject='', body='', }) {
this.to = to
this.files = files
this.subject = subject
this.body = body
}
}
class Mail extends RequestFile {
constructor (args = {}) {
super(args)
this.fill(args)
}
fill ({cc='', draft=false, preview=true}) {
this.cc = cc
this.draft = draft
this.preview = preview
}
to() {
console.log(this.to)
}
}
let mail = new Mail({
to: [ 'name@gmail.com' ],
files: [ 1111 ],
subject: 'Sent from Node',
body: 'test body -- sent from node',
cc: [ 'anotherone@gmail.com', 'another@gmail.com' ],
draft: true,
preview: true
})
console.log(mail)
Приведенное выше выводит следующее:
Mail {
cc:(2) [...],
draft: true ,
preview: true
}
Раскомментированиекод в классе RequestFile дает другой результат:
class RequestFile {
constructor (args = {}) {
this.to = args.to ? args.to : []
this.files = args.files ? args.files : []
this.body = args.body ? args.body : ''
}
fill ({to=[],files=[], subject='', body='', }) {
this.to = to
this.files = files
this.subject = subject
this.body = body
}
}
Mail {
to:(1) [...],
files:(1) [...],
body: "test body -- sent from node" ,
cc:(2) [...],
draft: true ,
preview: true
}
В идеале, я хотел бы положиться на метод fill для заполнения переменных класса, я просто запутался, почему он работает в подклассе (Mail) но не работает в родительском классе (RequestFile)