Così ho dovuto vedermela con le classi ES6 quando ho visto qualcosa di sorprendente:Accesso ES6 proprietà eccellenti
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);
}
}
Poi, ho creato il mio cane:
var mydog = new Dog("mydog",3);
mydog.speak();
Ora questo stampe
Woof! I'm undefined and am 3
Quindi la mia domanda è: perché è super.name
indefinito? Mi aspetto che sia mydog
in questo caso.
'super' può essere utilizzato solo per accedere alle proprietà sul prototipo. Usando 'this.name' che stai assegnando a * instance * e quindi devi sempre accedervi usando' this' – CodingIntrigue