Renvoie une valeur autre que la classe dans ES6
Récemment, j'ai été tester les classes avec ES6, j'ai remarqué que lors de la création d'une classe vous ne pouvez pas spécifier la valeur donnée par le constructeur.
Précédemment dans l'ES5 cela était possible.
Dans les deux cas, je serais d'instancier la classe avec new MyClass
La raison pour laquelle je veux faire, c'est pour que je puisse retourner un sous-ensemble de la classe actuelle avec seulement les fonctions sur elle.
ES5 - retours My class was init with: Blah
var MyClass = function() {
this.initVar = 'Blah'
return 'My Class was init with: ' + this.initVar
}
ES6 - retours {}
class Bob {
constructor() {
return 'hello'
}
}
source d'informationauteur MikaAK | 2015-01-16
Vous devez vous connecter pour publier un commentaire.
Comparer ces violons: es5 et
es6
Ce que vous dites était possible dans l'es5 est encore possible dans l'es6, il y a une petite chose que si vous utilisez le nouveau mot-clé, un nouvel objet de cette classe est créé et si vous ne l'ue nouveau, alors la fonction est exécutée.
Quand vous dites,
var x= Bob();
dans les deux es5 et es6, vous exécutez la fonction de constructeur, pas de créer un nouvel objet, donc elle retourne quelque chose.Et quand vous dites,
var x= new Bob();
vous obtenez un nouvel objet, initialisé par la fonction constructeur.Ceci est applicable à la fois es5 et es6, comme es6 classes n'a rien de nouveau , mais sont introduites juste pour le plaisir de la syntaxe.
Modifier: Dans le cas de l'extension de classes:
Vous ne pouvez pas étendre une classe dans l'es6 et s'attendre à ce que le super constructeur est appelé, vous avez besoin de l'appeler explicitement à l'intérieur de l'enfant, le constructeur de la classe.. voir le code:
C'est pourquoi, cette ne marche pas, mais cette fonctionne..