JavaScript est classe syntaxe, ajouté dans l'ES6, apparemment, fait-il légal d' étendre null
:
class foo extends null {}
Une recherche sur Google révèle qu'il a été suggéré sur ES de Discuter que de telles déclarations soient faites d'une erreur; toutefois, d'autres intervenants ont fait valoir pour être à gauche juridique sur la base que
quelqu'un pourrait vouloir créer une classe qui a un
{__proto__: null}
prototype
et de ce côté-là de l'argument finalement prévalu.
Je ne peux pas faire beaucoup de sens de cette étude de cas d'utilisation. Pour une chose, tandis que la déclaration d'une telle classe est juridique, il semble que l'instanciation d' une classe déclarée dans cette voie n'est pas. Essaie d'instancier la classe foo
à partir de ci-dessus dans Node.js ou Chrome me donne l'merveilleusement daft erreur
TypeError: function is not a function
tout en faisant la même dans Firefox me donne
TypeError: function () {
} is not a constructor
Il n'aide pas à définir un constructeur de la classe, comme indiqué dans la SOCIÉTÉ de l'exemple actuel de la fonction; si j'essaie d'instancier cette classe:
class bar extends null {
constructor(){}
}
puis Chrome/Nœud de me dire:
ReferenceError: this is not defined
et Firefox me dit:
ReferenceError: |this| used uninitialized in bar class constructor
Qu'est-ce que toute cette folie? Pourquoi sont-ils si nuls-l'extension de classes non instanciables? Et étant donné qu'ils ne sont pas instanciables, pourquoi avait la possibilité de créer délibérément laissé dans la spec, et pourquoi certains MDN auteur pense qu'il est assez remarquable de document? Quel cas est-il pour cette fonctionnalité?