You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
2.5 KiB
105 lines
2.5 KiB
|
|
|
|
class Person {
|
|
constructor(firstName, lastName, age, country, city) {
|
|
this.firstName = firstName
|
|
this.lastName = lastName
|
|
this.age = age
|
|
this.country = country
|
|
this.city = city
|
|
this.score = 0
|
|
this.skills = []
|
|
}
|
|
getFullName() {
|
|
const fullName = this.firstName + ' ' + this.lastName
|
|
return fullName
|
|
}
|
|
get getScore() {
|
|
return this.score
|
|
}
|
|
get getSkills() {
|
|
return this.skills
|
|
}
|
|
set setScore(score) {
|
|
this.score += score
|
|
}
|
|
set setSkill(skill) {
|
|
this.skills.push(skill)
|
|
}
|
|
getPersonInfo() {
|
|
let fullName = this.getFullName()
|
|
let skills =
|
|
this.skills.length > 0 &&
|
|
this.skills.slice(0, this.skills.length - 1).join(', ') +
|
|
` and ${this.skills[this.skills.length - 1]}`
|
|
|
|
let formattedSkills = skills ? `He knows ${skills}` : ''
|
|
|
|
let info = `${fullName} is ${this.age}. He lives ${this.city}, ${this.country}. ${formattedSkills}`
|
|
console.log(this)
|
|
return info
|
|
}
|
|
static favoriteSkill() {
|
|
const skills = ['HTML', 'CSS', 'JS', 'React', 'Python', 'Node']
|
|
const index = Math.floor(Math.random() * skills.length)
|
|
console.log('hi')
|
|
return skills[index]
|
|
}
|
|
}
|
|
|
|
console.log(Person.favoriteSkill())
|
|
|
|
class Student extends Person {
|
|
constructor(firstName, lastName, age, country, city, gender) {
|
|
super(firstName, lastName, age, country, city)
|
|
this.gender = gender
|
|
}
|
|
|
|
saySomething() {
|
|
console.log('I am a child of the person class')
|
|
}
|
|
getPersonInfo() {
|
|
let fullName = this.getFullName()
|
|
let skills =
|
|
this.skills.length > 0 &&
|
|
this.skills.slice(0, this.skills.length - 1).join(', ') +
|
|
` and ${this.skills[this.skills.length - 1]}`
|
|
|
|
let formattedSkills = skills ? `He knows ${skills}` : ''
|
|
let pronoun = this.gender == 'Male' ? 'He' : 'She'
|
|
|
|
let info = `${fullName} is ${this.age}. ${pronoun} lives in ${this.city}, ${this.country}. ${formattedSkills}`
|
|
console.log(this)
|
|
return info
|
|
}
|
|
}
|
|
|
|
const s1 = new Student(
|
|
'Asabeneh',
|
|
'Yetayeh',
|
|
250,
|
|
'Finland',
|
|
'Helsinki',
|
|
'Male'
|
|
)
|
|
const s2 = new Student('Lidiya', 'Tekle', 28, 'Finland', 'Helsinki', 'Female')
|
|
s1.setScore = 1
|
|
s1.setSkill = 'HTML'
|
|
s1.setSkill = 'CSS'
|
|
s1.setSkill = 'JavaScript'
|
|
|
|
s2.setScore = 1
|
|
s2.setSkill = 'Planning'
|
|
s2.setSkill = 'Managing'
|
|
s2.setSkill = 'Organizing'
|
|
|
|
console.log(s1)
|
|
console.log(s2)
|
|
|
|
console.log(s1.saySomething())
|
|
console.log(s1.getFullName())
|
|
console.log(s1.getPersonInfo())
|
|
|
|
console.log(s2.saySomething())
|
|
console.log(s2.getFullName())
|
|
console.log(s2.getPersonInfo()) |