Aperçu de JavaScript

  • Raccourci de la révision : JavaScript//Guide/Aperçu_de_JavaScript
  • Titre de la révision : Aperçu de JavaScript
  • ID de la révision : 283481
  • Créé :
  • Créateur : Quarkcool
  • Version actuelle ? Non
  • Commentaire ajout des liens précédent/suivant

Contenu de la révision

Qu'est ce que JavaScript?

JavaScript est un langage de scripts multi-plates-formes orienté-objet. JavaScript est un langage léger; il n'a aucune utilité en tant que langage autonome mais il est conçu pour s'intégrer facilement au sein d'autres produits et applications, un navigateur web par exemple. Lorsqu'utilisé au sein d'un environnement-hôte, JavaScript peut être relié aux objets de cet environnement et ainsi fournir un moyen de contrôler ces objets par le biais de la programmation.

Le JavaScript de base contient un ensemble d'objets de base, tels qu'Array, Date et Math ainsi qu'un ensemble d'éléments de base pour tout langage de programmation : opérateurs, structures de contrôle et autres instructions. Le JavaScript de base peut être étendu pour être appliquable à quelque domaine que ce soit en lui ajoutant des objets supplémentaires; deux exemples :

  • le JavaScript client étend le langage de base en lui ajoutant des objets destinés à contrôler un navigateur (Netscape Navigator ou un autre navigateur web) et à manipuler le DOM (Document Object Model). À titre d'exemple, les extensions client permettent aux applications d'ajouter des éléments à un formulaire HTML, de répondre aux actions de l'utilisateur tels que les clics de souris ou encore de gérer l'entrée des formulaires et la navigation entre les pages.
  • le JavaScript serveur étend le langage de base en fournissant des objets relatifs au bon fonctionnement de JavaScript du côté du serveur. À titre d'exemple, les extensions serveur permettent aux applications de communiquer avec une base de données relationnelle, de faire persister l'information entre deux invocations de la même application ou encore de manipuler des fichiers présents sur le serveur.

Grâce à la technologie LiveConnect de JavaScript vous pouvez faire communiquer du code Java avec du code JavaScript. À partir de JavaScript, vous pouvez instancier des objets Java et accéder à leurs méthodes et champs publics. À partir de Java, vous pouvez accéder aux objets, propriétés et méthodes JavaScript.

Netscape est l'inventeur de JavaScript et JavaScript a d'abord été utilisé dans les navigateurs Netscape.

JavaScript et Java

JavaScript et Java sont semblables sur certains points mais complètement différents sur d'autres. Le langage JavaScript ressemble à Java mais ne contient pas les fonctionnalités de Java liées au typage statique et au contrôle strict des types. JavaScript prend en charge la majorité de la syntaxe des expressions et structures de contrôle Java.

Par opposition au système des déclarations de classe du Java, qui emploie la compilation, JavaScript implémente un système fondé sur un petit nombre de types de données pouvant représenter des valeurs numériques, booléennes ainsi que des chaînes de caractère, tout cela au moment de l'exécution. JavaScript possède un modèle objet fondé sur le prototypage, et non sur les classes (modèle objet le plus courant). Ce modèle fondé sur le prototypage autorise l'héritage dynamique; cela signifie que le comportement et les données hérités peuvent varier d'instance à instance. JavaScript prend aussi en charge les fonctions, et n'impose aucune restriction spéciale concernant la déclaration de celles-ci. Une fonction peut constituer une propriété d'un objet; elle fait alors office de méthode dont le type n'est pas vérifié.

JavaScript est un langage très libre par rapport à Java. Vous ne devez pas déclarer toutes les variables, classes et méthodes en JavaScript. Vous n'avez pas à vous soucier de l'aspect public, privé ou protégé d'une méthode et vous n'avez pas besoin d'implémenter des interfaces en JavaScript. Les variables, paramètres et valeurs de renvoi n'ont pas besoin d'être typés explicitement.

Java est un langage de programmation fondé sur les classes et conçu pour une exécution rapide et une sécurité accrue au niveau des types. Cette sécurité signifie, par exemple, que vous ne pourrez pas transformer un entier Java en une référence à un objet ou accéder à de la mémoire privée en corrompant le bytecode Java. Le modèle objet de Java fondé sur les classes implique qu'un programme n'est constitué que d'une ou plusieurs classes et de leurs méthodes associées. L'implémentation de l'héritage en Java et le contrôle strict des types nécessitent de penser toute hiérarchie d'objets de manière très serrée au niveau des types. Toutes ces exigences rendent la programmation Java plus complexe que la programmation JavaScript.

Par opposition, JavaScript s'inscrit dans la lignée de langages typés dynamiquement et plus légers tels que HyperTalk et dBASE. Ces langages de script constituent des outils de programmation accessibles à un public plus large du fait de leur syntaxe plus simple, des fonctionnalités intégrées spécialisées et du peu d'exigences imposées au programmeur lors de la création d'objets.

JavaScript Java
Orienté-objet. Aucune distinction entre les types d'objet. L'héritage est réalisé par prototypage, et propriétés et méthodes peuvent être ajoutées à un objet dynamiquement. Fondé sur les classes. Les objets sont divisés entre classes et instances, et l'héritage est réalisé par l'intermédiaire des classes. Propriétés ou méthodes ne peuvent pas être ajoutées dynamiquement aux classes et instances.
Les types des variables ne sont pas déclarés (typage dynamique). Les types des variables doivent être déclarés (typage statique).
Ne peut pas écrire automatiquement sur le disque dur. Ne peut pas écrire automatiquement sur le disque dur.

Tableau 1.1 : Comparaison de JavaScript et Java

Pour plus d'informations concernant les différences entre JavaScript et Java, voyez le chapitre Détails du modèle objet.

JavaScript et la spécification ECMA

Netscape est l'inventeur de JavaScript et JavaScript a d'abord été utilisé dans les navigateurs Netscape. Toutefois, Netscape travaille en étroite collaboration avec l'ECMA (European Computer Manufacturers Association) dans le but de délivrer un langage de programmation international fondé sur JavaScript et défini par un standard. L'ECMA est une association internationale délivrant des normes pour les systèmes d'information et de communication. Les applications écrites dans cette version standard de JavaScript, baptisée ECMAScript, se comportent de la même manière quelle que soit la plate-forme prenant en charge ECMAScript. Les entreprises qui le souhaitent peuvent utiliser le standard ouvert du langage afin de développer leur propre implémentation de JavaScript. La première version du standard ECMA est décrite dans la spécification ECMA-262.

Le standard ECMA-262 est aussi approuvé par l'ISO (International Organization for Standards), en tant que norme ISO-16262. Vous trouverez une version PDF du standard ECMA-262 sur le site web de Mozilla. Vous pourrez aussi trouver la spécification sur le site web de l'ECMA. La spécification ECMA ne décrit pas le DOM (Document Object Model), un travail dont se charge le W3C (World Wide Web Consortium). Le DOM définit la manière dont les éléments d'un document HTML sont accessibles à votre script.

Relation entre version de JavaScript et version du standard ECMA

Netscape travaille en étroite collaboration avec l'ECMA dans le cadre de la spécification ECMAScript. Le tableau suivant décrit la relation entre version de JavaScript et version du standard.

</tr>
Version de JavaScript Version du standard ECMA
JavaScript 1.1 La spécification ECMA-262, édition 1 est fondée sur JavaScript 1.1.
JavaScript 1.2 La spécification ECMA-262 n'était pas terminée lorsque JavaScript 1.2 fut rendu disponible. JavaScript 1.2 n'est pas entièrement compatible avec la spécification ECMA-262, édition 1 pour les raisons suivantes :
  • Netscape a développé des fonctionnalités supplémentaires pour JavaScript 1.2 qui ne furent pas considérées pour inclusion dans la spécification ECMA-262.
  • La spécification ECMA-262 a ajouté deux nouvelles fonctionnalités : l'internationalisation grâce à Unicode et le comportement uniforme sur toutes les plates-formes. Plusieurs fonctionnalités de JavaScript 1.2, telles que l'objet Date, étaient dépendantes de la plate-forme utilisée et employaient des fonctionnalités spécifiques de la plate-forme utilisée.
JavaScript 1.3 JavaScript 1.3 est entièrement compatible avec la spécification ECMA-262, édition 1.


JavaScript 1.3 a résolu toutes les incohérences entre JavaScript 1.2 et la spécification ECMA-262, tout en conservant toutes les fonctionnalités supplémentaires de JavaScript 1.2 excepté les opérateurs == et != qui furent modifiés en concordance avec la spécification ECMA-262.
JavaScript 1.4 JavaScript 1.4 est entièrement compatible avec la spécification ECMA-262, édition 1.


La troisième version de la spécification ECMA n'était pas encore finie lorsque JavaScript 1.4 fut rendu disponible.
JavaScript 1.5 JavaScript 1.5 est entièrement compatible avec la spécification ECMA-262, édition 3.

Tableau 1.2 : Correspondance entre version de JavaScript et version du standard ECMA

Note : la spécification ECMA-262, édition 2 n'était constituée que de changements éditoriaux mineurs et corrections d'erreurs par rapport à l'édition 1. Le groupe de travail TC39 de l'ECMA travaille en ce moment sur ECMAScript édition 4, qui correspondra à une version future de JavaScript, JavaScript 2.0.

La référence JavaScript 1.5 indique si telle ou telle fonctionnalité est compatible ECMA.

JavaScript comportera toujours des fonctionnalités qui ne feront pas partie de la spécification ECMA; JavaScript est compatible avec la spécification ECMA mais ajoute des fonctionnalités supplémentaires.

Documentation de JavaScript versus spécification ECMA

La spécification ECMA constitue un ensemble d'exigences nécessaires à l'implémentation d'ECMAScript; elle vous sera utile si vous voulez déterminer si une fonctionnalité particulière de JavaScript est prise en charge par ECMAScript. Si vous comptez écrire du code JavaScript utilisant uniquement les fonctionnalités prises en charge par ECMAScript, alors il est possible que vous devrez lire en entier la spécification ECMA.

Le document ECMA n'est pas destiné à aider les programmeurs; utilisez la documentation de JavaScript pour des informations concernant l'écriture de scripts.

Terminologie JavaScript et ECMA

La spécification ECMA emploie une terminologie et une syntaxe qui peuvent paraître étranges à un programmeur JavaScript. Bien que la description du langage puisse différer pour ECMAScript, le langage en lui-même reste fondamentalement le même. JavaScript prend en charge toutes les fonctionnalités soulignées par la spécification ECMA.

La documentation de JavaScript décrit les aspects du langage pouvant intéresser un programmeur JavaScript. À titre d'exemple :

  • L'objet global ne fait pas l'objet de discussion dans la documentation JavaScript parce que vous ne l'utiliserez jamais directement. Les méthodes et propriétés de l'objet global, que vous êtes amené à utiliser, sont décrites dans la documentation de JavaScript sous le nom de fonctions et propriétés de haut niveau.
  • Les constructeurs sans paramètre (avec zéro argument) des objets Number et String ne font pas l'objet de discussion dans la documentation JavaScript, car ce qu'ils génèrent n'est pas très utile. Le constructeur sans paramètre de Number renvoie +0 et le constructeur sans paramètre de String renvoie "" (une chaîne vide).

{{wiki.template('PrécédentSuivant', [ "Guide JavaScript 1.5:%C3%80_propos", "Guide JavaScript 1.5:Valeurs" ])}}

Source de la révision

<p>
</p>
<h2 name="Qu.27est_ce_que_JavaScript.3F"> Qu'est ce que JavaScript? </h2>
<p>JavaScript est un langage de scripts multi-plates-formes orienté-objet. JavaScript est un langage léger; il n'a aucune utilité en tant que langage autonome mais il est conçu pour s'intégrer facilement au sein d'autres produits et applications, un navigateur web par exemple. Lorsqu'utilisé au sein d'un environnement-hôte, JavaScript peut être relié aux objets de cet environnement et ainsi fournir un moyen de contrôler ces objets par le biais de la programmation.
</p><p>Le JavaScript de base contient un ensemble d'objets de base, tels qu'<code>Array</code>, <code>Date</code> et <code>Math</code> ainsi qu'un ensemble d'éléments de base pour tout langage de programmation : opérateurs, structures de contrôle et autres instructions. Le JavaScript de base peut être étendu pour être appliquable à quelque domaine que ce soit en lui ajoutant des objets supplémentaires; deux exemples :
</p>
<ul><li> le <i>JavaScript client</i> étend le langage de base en lui ajoutant des objets destinés à contrôler un navigateur (Netscape Navigator ou un autre navigateur web) et à manipuler le DOM (Document Object Model). À titre d'exemple, les extensions client permettent aux applications d'ajouter des éléments à un formulaire HTML, de répondre aux actions de l'utilisateur tels que les clics de souris ou encore de gérer l'entrée des formulaires et la navigation entre les pages.
</li><li> le <i>JavaScript serveur</i> étend le langage de base en fournissant des objets relatifs au bon fonctionnement de JavaScript du côté du serveur. À titre d'exemple, les extensions serveur permettent aux applications de communiquer avec une base de données relationnelle, de faire persister l'information entre deux invocations de la même application ou encore de manipuler des fichiers présents sur le serveur.
</li></ul>
<p>Grâce à la technologie LiveConnect de JavaScript vous pouvez faire communiquer du code Java avec du code JavaScript. À partir de JavaScript, vous pouvez instancier des objets Java et accéder à leurs méthodes et champs publics. À partir de Java, vous pouvez accéder aux objets, propriétés et méthodes JavaScript.
</p><p>Netscape est l'inventeur de JavaScript et JavaScript a d'abord été utilisé dans les navigateurs Netscape.
</p>
<h2 name="JavaScript_et_Java"> JavaScript et Java </h2>
<p>JavaScript et Java sont semblables sur certains points mais complètement différents sur d'autres. Le langage JavaScript ressemble à Java mais ne contient pas les fonctionnalités de Java liées au typage statique et au contrôle strict des types. JavaScript prend en charge la majorité de la syntaxe des expressions et structures de contrôle Java.
</p><p>Par opposition au système des déclarations de classe du Java, qui emploie la compilation, JavaScript implémente un système fondé sur un petit nombre de types de données pouvant représenter des valeurs numériques, booléennes ainsi que des chaînes de caractère, tout cela au moment de l'exécution. JavaScript possède un modèle objet fondé sur le prototypage, et non sur les classes (modèle objet le plus courant). Ce modèle fondé sur le prototypage autorise l'héritage dynamique; cela signifie que le comportement et les données hérités peuvent varier d'instance à instance. JavaScript prend aussi en charge les fonctions, et n'impose aucune restriction spéciale concernant la déclaration de celles-ci. Une fonction peut constituer une propriété d'un objet; elle fait alors office de méthode dont le type n'est pas vérifié.
</p><p>JavaScript est un langage très libre par rapport à Java. Vous ne devez pas déclarer toutes les variables, classes et méthodes en JavaScript. Vous n'avez pas à vous soucier de l'aspect public, privé ou protégé d'une méthode et vous n'avez pas besoin d'implémenter des interfaces en JavaScript. Les variables, paramètres et valeurs de renvoi n'ont pas besoin d'être typés explicitement.
</p><p>Java est un langage de programmation fondé sur les classes et conçu pour une exécution rapide et une sécurité accrue au niveau des types. Cette sécurité signifie, par exemple, que vous ne pourrez pas transformer un entier Java en une référence à un objet ou accéder à de la mémoire privée en corrompant le bytecode Java. Le modèle objet de Java fondé sur les classes implique qu'un programme n'est constitué que d'une ou plusieurs classes et de leurs méthodes associées. L'implémentation de l'héritage en Java et le contrôle strict des types nécessitent de penser toute hiérarchie d'objets de manière très serrée au niveau des types. Toutes ces exigences rendent la programmation Java plus complexe que la programmation JavaScript.
</p><p>Par opposition, JavaScript s'inscrit dans la lignée de langages typés dynamiquement et plus légers tels que HyperTalk et dBASE. Ces langages de script constituent des outils de programmation accessibles à un public plus large du fait de leur syntaxe plus simple, des fonctionnalités intégrées spécialisées et du peu d'exigences imposées au programmeur lors de la création d'objets.
</p>
<table class="fullwidth-table">
<tbody><tr>
<th>JavaScript</th>
<th>Java</th>
</tr>
<tr>
<td>Orienté-objet. Aucune distinction entre les types d'objet. L'héritage est réalisé par prototypage, et propriétés et méthodes peuvent être ajoutées à un objet dynamiquement.</td>
<td>Fondé sur les classes. Les objets sont divisés entre classes et instances, et l'héritage est réalisé par l'intermédiaire des classes. Propriétés ou méthodes ne peuvent pas être ajoutées dynamiquement aux classes et instances.</td>
</tr>
<tr>
<td>Les types des variables ne sont pas déclarés (typage dynamique).</td>
<td>Les types des variables doivent être déclarés (typage statique).</td>
</tr>
<tr>
<td>Ne peut pas écrire automatiquement sur le disque dur.</td>
<td>Ne peut pas écrire automatiquement sur le disque dur.</td>
</tr>

</tbody></table>
<p><small><b>Tableau 1.1 : Comparaison de JavaScript et Java</b></small>
</p><p>Pour plus d'informations concernant les différences entre JavaScript et Java, voyez le chapitre <a href="fr/Guide_JavaScript_1.5#D.C3.A9tails_du_mod.C3.A8le_objet">Détails du modèle objet</a>.
</p>
<h2 name="JavaScript_et_la_sp.C3.A9cification_ECMA"> JavaScript et la spécification ECMA </h2>
<p>Netscape est l'inventeur de JavaScript et JavaScript a d'abord été utilisé dans les navigateurs Netscape. Toutefois, Netscape travaille en étroite collaboration avec <a class="external" href="http://www.ecma.ch/">l'ECMA</a> (European Computer Manufacturers Association) dans le but de délivrer un langage de programmation international fondé sur JavaScript et défini par un standard. L'ECMA est une association internationale délivrant des normes pour les systèmes d'information et de communication. Les applications écrites dans cette version standard de JavaScript, baptisée ECMAScript, se comportent de la même manière quelle que soit la plate-forme prenant en charge ECMAScript. Les entreprises qui le souhaitent peuvent utiliser le standard ouvert du langage afin de développer leur propre implémentation de JavaScript. La première version du standard ECMA est décrite dans la spécification ECMA-262.
</p><p>Le standard ECMA-262 est aussi approuvé par <a class="external" href="http://www.iso.ch/">l'ISO</a> (International Organization for Standards), en tant que norme ISO-16262. Vous trouverez <a class="external" href="http://developer.netscape.com/docs/javascript/e262-pdf.pdf">une version PDF du standard ECMA-262</a> sur le site web de Mozilla. Vous pourrez aussi trouver la spécification sur <a class="external" href="http://www.ecma.ch/ecma1/stand/ecma-262.html">le site web de l'ECMA</a>. La spécification ECMA ne décrit pas le DOM (Document Object Model), un travail dont se charge le <a class="external" href="http://www.w3.org/">W3C (World Wide Web Consortium)</a>. Le DOM définit la manière dont les éléments d'un document HTML sont accessibles à votre script.
</p>
<h4 name="Relation_entre_version_de_JavaScript_et_version_du_standard_ECMA"> Relation entre version de JavaScript et version du standard ECMA </h4>
<p>Netscape travaille en étroite collaboration avec l'ECMA dans le cadre de la spécification ECMAScript. Le tableau suivant décrit la relation entre version de JavaScript et version du standard.
</p>

&lt;/tr&gt;
<table class="fullwidth-table">
<tbody><tr>
<th>Version de JavaScript</th>
<th>Version du standard ECMA</th>
</tr>
<tr>
<td>JavaScript 1.1</td>
<td>La spécification ECMA-262, édition 1 est fondée sur JavaScript 1.1.</td>
</tr>
<tr>
<td>JavaScript 1.2</td>
<td>La spécification ECMA-262 n'était pas terminée lorsque JavaScript 1.2 fut rendu disponible. JavaScript 1.2 n'est pas entièrement compatible avec la spécification ECMA-262, édition 1 pour les raisons suivantes :
<ul><li> Netscape a développé des fonctionnalités supplémentaires pour JavaScript 1.2 qui ne furent pas considérées pour inclusion dans la spécification ECMA-262.
</li><li> La spécification ECMA-262 a ajouté deux nouvelles fonctionnalités : l'internationalisation grâce à Unicode et le comportement uniforme sur toutes les plates-formes. Plusieurs fonctionnalités de JavaScript 1.2, telles que l'objet Date, étaient dépendantes de la plate-forme utilisée et employaient des fonctionnalités spécifiques de la plate-forme utilisée.</li></ul></td>

</tr>
<tr>
<td>JavaScript 1.3</td>
<td>JavaScript 1.3 est entièrement compatible avec la spécification ECMA-262, édition 1.
<p><br>
</p>
JavaScript 1.3 a résolu toutes les incohérences entre JavaScript 1.2 et la spécification ECMA-262, tout en conservant toutes les fonctionnalités supplémentaires de JavaScript 1.2 excepté les opérateurs == et != qui furent modifiés en concordance avec la spécification ECMA-262.</td>
</tr>
<tr><td>JavaScript 1.4</td>
<td>JavaScript 1.4 est entièrement compatible avec la spécification ECMA-262, édition 1.
<p><br>
</p>
La troisième version de la spécification ECMA n'était pas encore finie lorsque JavaScript 1.4 fut rendu disponible.</td></tr><tr>
<td>JavaScript 1.5</td>
<td>JavaScript 1.5 est entièrement compatible avec la spécification ECMA-262, édition 3.
</td></tr>
</tbody></table>
<p><small><b>Tableau 1.2 : Correspondance entre version de JavaScript et version du standard ECMA</b></small>
</p><p>Note : la spécification ECMA-262, édition 2 n'était constituée que de changements éditoriaux mineurs et corrections d'erreurs par rapport à l'édition 1. Le groupe de travail TC39 de l'ECMA travaille en ce moment sur ECMAScript édition 4, qui correspondra à une version future de JavaScript, JavaScript 2.0.
</p><p>La <a href="fr/R%c3%a9f%c3%a9rence_JavaScript_1.5">référence JavaScript 1.5</a> indique si telle ou telle fonctionnalité est compatible ECMA.
</p><p>JavaScript comportera toujours des fonctionnalités qui ne feront pas partie de la spécification ECMA; JavaScript est compatible avec la spécification ECMA mais ajoute des fonctionnalités supplémentaires.
</p>
<h4 name="Documentation_de_JavaScript_versus_sp.C3.A9cification_ECMA"> Documentation de JavaScript versus spécification ECMA </h4>
<p>La spécification ECMA constitue un ensemble d'exigences nécessaires à l'implémentation d'ECMAScript; elle vous sera utile si vous voulez déterminer si une fonctionnalité particulière de JavaScript est prise en charge par ECMAScript. Si vous comptez écrire du code JavaScript utilisant uniquement les fonctionnalités prises en charge par ECMAScript, alors il est possible que vous devrez lire en entier la spécification ECMA.
</p><p>Le document ECMA n'est pas destiné à aider les programmeurs; utilisez la documentation de JavaScript pour des informations concernant l'écriture de scripts.
</p>
<h4 name="Terminologie_JavaScript_et_ECMA"> Terminologie JavaScript et ECMA </h4>
<p>La spécification ECMA emploie une terminologie et une syntaxe qui peuvent paraître étranges à un programmeur JavaScript. Bien que la description du langage puisse différer pour ECMAScript, le langage en lui-même reste fondamentalement le même. JavaScript prend en charge toutes les fonctionnalités soulignées par la spécification ECMA.
</p><p>La documentation de JavaScript décrit les aspects du langage pouvant intéresser un programmeur JavaScript. À titre d'exemple :
</p>
<ul><li> L'objet <code>global</code> ne fait pas l'objet de discussion dans la documentation JavaScript parce que vous ne l'utiliserez jamais directement. Les méthodes et propriétés de l'objet <code>global</code>, que vous êtes amené à utiliser, sont décrites dans la documentation de JavaScript sous le nom de fonctions et propriétés de haut niveau.
</li><li> Les constructeurs sans paramètre (avec zéro argument) des objets <code>Number</code> et <code>String</code> ne font pas l'objet de discussion dans la documentation JavaScript, car ce qu'ils génèrent n'est pas très utile. Le constructeur sans paramètre de <code>Number</code> renvoie +0 et le constructeur sans paramètre de <code>String</code> renvoie "" (une chaîne vide).
</li></ul>
<p>{{wiki.template('PrécédentSuivant', [ "Guide JavaScript 1.5:%C3%80_propos", "Guide JavaScript 1.5:Valeurs" ])}}
</p>
Revenir à cette révision