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()) |