So war ich mit ES6 Klassen rumgespielt, wenn ich etwas sah überraschend:Zugriff ES6 Super Eigenschaften
class Animal {
constructor(name) {
this.name = name;
}
speak(sound) {
console.log(sound);
}
}
class Dog extends Animal {
constructor(name, age) {
super(name);
this.age = age;
}
speak() {
super.speak("Woof! I'm " + super.name + " and am " + this.age);
}
}
Dann, habe ich meinen Hund:
var mydog = new Dog("mydog",3);
mydog.speak();
Nun ist diese druckt
Woof! I'm undefined and am 3
Also meine Frage ist, warum ist super.name
undefined? Ich erwarte in diesem Fall mydog
.
umschreiben, die nur verwendet werden kann, um auf Eigenschaften auf dem Prototyp zuzugreifen. Mit 'this.name' werden Sie der * Instanz * zugewiesen und müssen immer mit' this' darauf zugreifen. – CodingIntrigue