86 votes

Est-ce que JavaScript a des cours?

Un ami et moi avons eu une dispute la semaine dernière. Il a déclaré qu’il n’existait pas de classe JavaScript.

J'ai dit qu'il y avait comme vous pouvez dire var object = new Object()

Il dit "comme il n'y a pas de mot class utilisé. Ce n'est pas une classe."

Qui a raison?


Comme une note; Pour l'avenir, vous avez besoin d'une mise en œuvre succincte de Classy JS:

https://github.com/tnhu/jsface

121voto

Steve Harrison Points 31062

Techniquement, l'énoncé "JavaScript n'a pas de classes" est correct.

Bien que le JavaScript est le langage orienté objet, il n'est pas une classe de langue-c'est un langage basé sur des prototypes. Il y a des différences entre ces deux approches, mais depuis qu'il est possible d'utiliser JavaScript comme une classe de base de la langue, beaucoup de gens (y compris moi-même), souvent simplement consulter le constructeur de fonctions comme "classes".

7voto

ChristopheD Points 38217

En Javascript, presque tout est un object (les objets peuvent hériter d’autres objets). Il n’a pas classes au sens classique.

Bien que vous puissiez reproduire la plupart des fonctionnalités de la définition / instanciation de classe traditionnelle par le prototypage de fonctions.

7voto

Christopher Altman Points 2371

Écouter Douglas Crockford parler ici:
http://developer.yahoo.com/yui/theater/video.php?v=crockonjs-2

Il s'adresse directement à votre question lors de sa présentation:

Le plus controversé de la langue est la façon de faire de l'héritage, qui est radicalement différente de celle de presque toutes les autres langues modernes. La plupart des langues de l'utilisation des classes – je les appelle les "langues classiques' – JavaScript ne fonctionne pas. JavaScript est de classe libre. Il utilise des prototypes. Pour les personnes qui ont une formation classique qui regarde la langue, ils vont: eh bien, c'est déficiente. Vous n'avez pas les classes, comment pouvez-vous faire quelque chose? Comment pouvez-vous avoir confiance que la structure de votre programme va fonctionner? Et ils ne sont jamais passé. Mais il s'avère...

4voto

Pavel Radzivilovsky Points 11613

Par "langage X a des classes", on entend généralement le soutien de la programmation orientée objet.

Oui, Javascript est un langage orienté objet.

2voto

fthinker Points 351

Quand je pense à des classes, je pense que des types et le fait que les classes permettez-moi de définir de nouveaux types. En js, vous ne pouvez pas créer de nouveaux types. Vous pouvez faire toutes sortes de fantaisie oo trucs avec des prototypes mais le fait que tout est encore un objet vraiment frappe à la maison de la classe moins de la nature de js. Je pense que les gens à l'aide de "classe" terminologie lorsqu'on parle de js confond le js comme un prototype de la langue vs js comme un langage classique, encore plus que le laid nouvel opérateur. En bref, tout simplement parce que le js est OO ne signifie pas que les classes existent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X