You can extend or import/assign classes within a class. Here is a example of that.
class Developer {
language() {
const languages = [
'Ruby',
'JavaScript',
'Python',
'jQuery',
'Swift',
'HTML5',
'CSS3'
];
}
constructor( { name, age, eyeColor = 'blue' } = {} ) {
this.name = name;
this.age = age;
this.eyeColor = eyeColor;
}
}
class Student extends Developer {
// If called a framework as true, then it will call the instance of language
// if false, then it will call a language aka framework from the Student class
language( framework ) {
if (framework){
super.language();
return;
}
const languages = [
'Ruby on Rails',
'Angular',
'ReactJS',
'Django',
'Ionic',
'Ember'
];
// Generates a random language
console.log(`${this.name} is learning ${languages[Math.floor(Math.random() * languages.length)]}.`);
}
constructor( {name, age, interestLevel = 5 } = {} ) {
super({ name, age }); // Needed to call instances from Person
this.name = name; // Needed to call this.name
this.age = age; // Needed to call this.name
this.interestLevel = interestLevel;
this.grades = new Map();
}
}
// Sets the Class name
// let colin = new Developer({ name: 'Colin', age: 32 });
let colin = new Student({ name: 'Colin', age: 32, interestLevel: 4 });
colin.language(true);
let colper = new Developer(({ name: 'Colper', age: 32 }));
//Calls the language function on that class
colin.language();
console.log(`Colin's interest level is: ${colin.interestLevel}`);
console.log(`Colin's developer name is ${colper.name}, and is ${colper.age} years old.`);