In following code I'm expecting to print the values passed in to them as sentences. But instead program is printing the declaring function to the console.
class Person {
constructor(firstName, lastName){
this._firstName = firstName;
this._lastName = lastName;
}
printName() {
return `Hello my name is ${this.firstName} ${this.lastName}`
}
}
class Staff extends Person {
constructor(firstName, lastName, employeeID, location){
super(firstName, lastName);
this._employeeID = employeeID;
this._location = location
}
printName(){
return `${super.printName}, my staff ID is ${this.employeeID}`
}
facilitatedBranch(){
return `My branch is ${this._location}`
}
}
class ProjectManager extends Staff {
constructor(firstName, lastName, employeeID, location, project){
super(firstName, lastName, employeeID, location);
this._project = project;
}
printPmInfo(){
return `${super.printName} ${super.facilitatedBranch} my project is ${this._project}`
}
}
let jhon = new ProjectManager('Jhon', 'Snow', 212 , 'Colombo', 'Blood Bank');
console.log(jhon.printPmInfo());
My expected output should be "Hello my name is Jhon Snow, my staff ID is 212 My branch is Colombo my project is blood bank"
In your current code, you never call printName
or facilitatedBranch
.
console.log
converts all arguments to string by default.
In JavaScript, function.toString()
returns stringified body of the function.
printPmInfo(){
return `${super.printName} ${super.facilitatedBranch} my project is ${this._project}`
}
Call printName
and facilitatedBranch
to actually run the functions and get the value.
printPmInfo(){
return `${super.printName()} ${super.facilitatedBranch()} my project is ${this._project}`
}
Final version:
class Person {
constructor(firstName, lastName) {
this._firstName = firstName;
this._lastName = lastName;
}
printName() {
return `Hello my name is ${this._firstName} ${this._lastName}`
}
}
class Staff extends Person {
constructor(firstName, lastName, employeeID, location) {
super(firstName, lastName);
this._employeeID = employeeID;
this._location = location
}
printName() {
return `${super.printName()}, my staff ID is ${this._employeeID}`
}
facilitatedBranch() {
return `My branch is ${this._location}`
}
}
class ProjectManager extends Staff {
constructor(firstName, lastName, employeeID, location, project) {
super(firstName, lastName, employeeID, location);
this._project = project;
}
printPmInfo() {
return `${super.printName()} ${super.facilitatedBranch()} my project is ${this._project}`
}
}
let jhon = new ProjectManager('Jhon', 'Snow', 212, 'Colombo', 'Blood Bank');
console.log(jhon.printPmInfo());