100 lines
3.6 KiB
JavaScript
100 lines
3.6 KiB
JavaScript
function User(username, email) {
|
|
this.username = username;
|
|
this.email = email;
|
|
|
|
this.login = function () {
|
|
console.log(`The user ${this.username} logged in!`);
|
|
}
|
|
|
|
this.logout = function () {
|
|
console.log(`The user ${this.username} logged out!`);
|
|
}
|
|
}
|
|
|
|
User.prototype.login = function () { // Collection der prototype Funktionen in __proto__ Sammlung "User.prototype"
|
|
console.log(`${this} wurde angemeldet`);
|
|
return this;
|
|
}
|
|
|
|
User.prototype.logout = function () { // Collection der prototype Funktionen in __proto__ Sammlung "User.prototype"
|
|
console.log(`${this} wurde abgemeldet`);
|
|
return this;
|
|
}
|
|
|
|
// const userOne = new User("davida", "davida@gmail.com")
|
|
// const userTwo = new User("joanne", "joanne@gmail.com")
|
|
// userOne.login();
|
|
|
|
// *** das Gleiche da unten ***
|
|
|
|
// class User {
|
|
|
|
// constructor(username, email) {
|
|
// console.log("new User wurde erstellt");
|
|
// //einstellen der Properties für das Object
|
|
// this.username = username;
|
|
// this.email = email;
|
|
// this.score = 0;
|
|
// }
|
|
|
|
// login() {
|
|
// console.log(`The user ${this.username} logged in!`);
|
|
// return this;
|
|
// // Eine Methode-Verkettung kann man nur dann benutzen, wenn eine Methode eine Instance des Selbst-Objektes zurückgibt
|
|
// // (Anweisung "this" referiert auf sein eigenes Objekt)
|
|
// }
|
|
|
|
// logout() {
|
|
// console.log(`The user ${this.username} logged out!`);
|
|
// return this;
|
|
// }
|
|
|
|
// printUserData() {
|
|
// console.log(`username: ${this.username}, email: ${this.email}!`)
|
|
// }
|
|
|
|
// incScore() {
|
|
// this.score++;
|
|
// console.log(`${this.username} has a score of ${this.score}`)
|
|
// return this;
|
|
// }
|
|
// }
|
|
|
|
// class Admin extends User {
|
|
// constructor(username, email, title) {
|
|
// super(username, email); // damit wird erst der Konstruktor der Eltern Klasse (User- Generalization Class) ausgeführt,
|
|
// // dannach wird der Konstruktor der User Klasse ausgeführt. Am Ende des Konstruktors wird die Eigenschaft title ausgeführt und zugewissen.
|
|
// this.title = title;
|
|
// }
|
|
|
|
// deleteUser(user) { // mit einem Admin-Objekt kann man mithilfe der deleteUser() Methode,
|
|
// // einen User aus dem Feld entfernen (filter() Methode hilft dabei, um User, den die Beziehung entspricht, zu entfernen)
|
|
// users = users.filter((u) => {
|
|
// return u.username !== user.username;
|
|
// });
|
|
// }
|
|
// }
|
|
|
|
// *** Das Gleiche da oben ***
|
|
function Admin(username, email, title) { // Definition einer Admin Klasse, die von der User Klasse(spezializierte Klasse) abgeleitet ist
|
|
User.call(this, username, email); // mit der Object.call() Methode wird der Konstruktor in der User Klasse ausgeführt
|
|
// (this parameter referiert auf die Instance des User Objektes, der Parameter username und email referiert auf die Eigenschaften des User Objektes
|
|
this.title = title;
|
|
}
|
|
|
|
Admin.prototype = Object.create(User.prototype); // damit die Admin Klasse die prototype Methoden aus der User Klasse bekommt
|
|
|
|
|
|
|
|
// *** DIE AUSGABEN DER OBJEKTEN UND OBJEKT-ERSTELLUNGEN ***
|
|
|
|
// const userOne = new User("David", "davida@gmail.com");
|
|
// const userTwo = new User("Nika", "nikaa@gmail.com");
|
|
// const userThree = new Admin("Joanne", "joannea@gmail.com", "lead entwickler");
|
|
|
|
// console.log(userOne, userTwo, userThree);
|
|
// let users = [userOne, userTwo, userThree];
|
|
|
|
// console.log(users);
|
|
// userThree.deleteUser(userTwo);
|
|
// console.log(users);
|