Ich habe einige Aufgaben für meinen Job gemacht, ich habe alle von ihnen getan. Aber ich habe ein paar Probleme, es funktioniert nicht so wie es soll. Wenn ich versuche, einen neuen Benutzer für Customer-Klasse hinzufügen, zum Beispiel:Javascript/Erweiterte Klassen/Objekte
var user3 = new Customer ("Sergiu", "Tataru");
Und wenn ich user3 zuzugreifen, erhalte ich:
lastname: undefined
Warum so?
Sehen Sie das Ergebnis zu verstehen, was ich meine
Die Aufgaben, die ich getan habe:
- Verwenden Sie eine Klasse Person und erweitern sie für die Mitarbeiter und Kunden Klassen.
- Das Person-Objekt hat eine private name -Eigenschaft und eine Getter-Methode für den Namen.
- Die Employee-Klasse hat zwei private Mietdaten und Gehalt. Es hat auch Getter-Methoden für die zwei Eigenschaften.
- Die Customer-Klasse hat eine private Vertragsnummer-Eigenschaft und einen Getter für die Vertragsnummer.
Der Code:
//4)Create a Person class
class Person{
constructor(firstName, lastName) {
this.firstname = firstName;
this.lastname = lastName;
var _name = name;// create a private name property for the Person class
// create a getter method for the name for the Person class
this.getName = function() {
return _name;
};
this.getFullName = function() {
return this.firstname+ " " + this.lastname;
};
}
}
// extend Person class for the Employee and Customer classes.
class Employee extends Person {
constructor(hireDate, salary){
super(hireDate, salary);
var _hiredate = hireDate; // create a private property hire date for Employee class
var _salary = salary; // create a private property salary for Employee class
// create a getter method for the hire date s
this.getHireDate = function(){
return _hiredate;
};
// create a getter method for the salary
this.getSalary = function(){ //varianta alternativa: Employee.prototype.getSalary = function(){
return _salary;
};
}
}
class Customer extends Person {
constructor(contractNumber){
super(contractNumber);
var _contractNumber = contractNumber; // create a private contract number for Customer class
//create a getter for the contract number.
this.getcontractNumber = function(){
return _contractNumber;
};
};
}
Warum nennen Sie 'super (hireDate, Gehalt);'? Wenn '(firstName, lastName) 'erwartet wird ... – evolutionxbox
Auch der Konstruktor' customer 'hat keine zwei Argumente. Es hat eine 'contractNumber'. --- Ich glaube nicht, dass klassische OOP in diesem Fall das ist, was du willst, vielleicht versuche [ente-typing] (https://stackoverflow.com/questions/3379529/duck-typing-in-javascript)? – evolutionxbox
neu formatiert und bewegte Bild inline – garyh