Selon l'initialiseur sténographique ES6, les 2 méthodes suivantes sont identiques:
var person = {
name: "Person",
greet: function() {
return "Hello " + this.name;
}
};
var person = {
name: "Person",
greet() {
return "Hello " + this.name;
}
};
La méthode ES6 est-elle en tout cas différente de la méthode précédente? Si ce n'est pas le cas, l'utilisation de "super" à l'intérieur devrait également être traitée comme égale, ce qui n'est pas vrai, veuillez voir ci-dessous deux variantes:
let person = {
greet(){
super.greet();
}
};
Object.setPrototypeOf(person, {
greet: function(){ console.log("Prototype method"); }
});
person.greet();
let person = {
greet: function(){
super.greet(); // Throw error: Uncaught SyntaxError: 'super' keyword unexpected here
}
};
Object.setPrototypeOf(person, {
greet: function(){ console.log("Prototype method"); }
});
person.greet();
La seule différence dans les 2 exemples ci-dessus est la façon dont nous déclarons la méthode salue en objet personne, qui devrait être la même. Alors, pourquoi obtenons-nous une erreur?
Alors, pourquoi obtenons-nous une erreur?
Parce que super
n'est valide qu'à l'intérieur des méthodes . greet: function() {}
est une propriété/fonction "normale", pas une méthode, car elle ne suit pas la syntaxe de la méthode.
Les différences entre une méthode et une définition de fonction normale sont:
super
.new
.