CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
JavaScript - Wikipédia

JavaScript

Un article de Wikipédia, l'encyclopédie libre.

Vous avez de nouveaux messages (diff ?).
image:Langage_progr.png
Cet article fait partie de la série
Langages de programmation
Langages à objets
C++ - C#
Delphi - Eiffel - Java
Groovy - Python - Ruby
Simula - Smalltalk
Visual Basic - WinDev
Langages impératifs
APL - ASP - Assembleur
BASIC - C - Cobol
Forth - Fortran - Logo
Pascal - Limbo - Perl - PHP
Langages fonctionnels
Haskell - ML/OCaml
Lisp/Common Lisp
Scheme
XSLT
Langages déclaratifs
Clips - Prolog
Langages concurrents
Ada 95 - Erlang
Langage de balisage
HTML - SGML - XML
S-expressions
Voir aussi
Conception - Codage
Tests - Optimisations

JavaScript est un langage de programmation de type script, orienté objets à prototype, principalement utilisé dans les pages Web.

Sommaire

[modifier] Histoire

[modifier] Brendan Eich

JavaScript a été créé par Brendan Eich pour le compte de la Netscape Communications Corporation, à l'origine connue sous le nom de Mosaic Communications Corporation. Mais JavaScript s'appelait à l'origine LiveScript.


[modifier] LiveScript et Mosaic Communications Corporation

Brendan Eich a donc developpé un langage de script côté serveur, appelé LiveScript, pour renforcer l'offre commerciale de serveur web de Mosaic Communications Corporation. La sortie de LiveScript intervient à l'époque où la NCSA force Mosaic Communications Corporation à changer de nom pour devenir Netscape.

Netscape travailla alors au développement d'une version orientée client de LiveScript. Quelques jours avant sa sortie, Netscape changea le nom de LiveScript pour JavaScript. Sun et Netscape étaient partenaires, et la machine virtuelle Java de plus en plus populaire. Ce changement de nom servait les intérêts des deux sociétés, et Sun promit de ne pas poursuivre Netscape.

[modifier] Netscape et ECMAScript

En décembre 1995, Sun et Netscape annoncent (en) la sortie de JavaScript. En mars 1996, Netscape met en œuvre le moteur javaScript dans son navigateur web Netscape Navigator 2.0. Le succès de ce navigateur contribue à l'adoption rapide de JavaScript dans le développement web orienté client. Microsoft réagit alors en développant JScript, qu'il inclue ensuite dans Internet Explorer 3.0 en août 1996 pour la sortie de son navigateur.

Netscape soumet alors JavaScript à l'ECMA pour standardisation. Les travaux débutent en novembre 1996, et se terminent en juin 1997 par l'adoption du nouveau standard ECMAScript. Les spécifications sont rédigées dans le document Standard ECMA-262.

[modifier] Concepts

JavaScript est décrit comme un complément à Java dans un communiqué de presse commun de Netscape et Sun Microsystems, daté du 4 décembre 1995. Cette initiative a contribué à créer auprès du public une certaine confusion entre les deux langages, proches syntaxiquement mais pas du tout dans leurs concepts fondamentaux, et qui perdure encore aujourd'hui.

Le propos de JavaScript est de manipuler de façon simple des objets, au sens informatique, fournis par une application hôte.

[modifier] Le standard ECMAScript

JavaScript met en œuvre les spécifications du langage ECMAScript, un standard rédigé par l'ECMA dans le document ECMA-262.

La troisième édition d'ECMAScript, parue en 1999 correspond à la version 1.5 de JavaScript. Sa mise en œuvre par Microsoft porte quant à elle le nom de JScript. Adobe pour sa part, met en œuvre ces spécifications dans son langage ActionScript.


SpiderMonkey est le nom de la mise en œuvre C du langage JavaScript utilisé dans Gecko, le moteur de rendu développé par mozilla. SpiderMonkey est disponible sous la licence « MPL/GPL/LGPL tri-license ».

[modifier] Versions

Les versions du langage JavaScript ont pour origine les spécifications de la norme ECMA-262 définissant ECMAScript. JavaScript est un sur-ensemble d'ECMAScript, plus les fonctionnalités suivantes :

[modifier] 1.5

Interpréteur basé sur les spécifications ECMA-262 3e édition.

[modifier] 1.6

Toutes les fonctionnalités de la version 1.5 plus:

  • E4X
  • Extension de l'objet Array
  • Rapprochement des objets String et Array

pour en savoir plus (en)

[modifier] 1.7

Toutes les fonctionnalités de la version 1.6 plus:

  • Générateurs (instruction yield)
  • Itérateurs
  • Définition de tableaux par compréhension (var evens = [i for (i in range(0, 21)) if (i% 2 == 0)];)
  • Définition de portée locale (instruction let)
  • Assignation déstructurante (Renvoi de valeurs multiples: [a,b] = maFonction())

pour en savoir (en)

[modifier] 2.0

Interpréteur basé sur les spécifications du langage ECMAScript Edition 4, un standard rédigé par l'ECMA dans le document ECMA-262 4ème édition.

  • Mise en œuvre des spécifications ES4 en collaboration avec Adobe: projet Tamarin.

[modifier] Utilisation

[modifier] Dans une page Web

Du code JavaScript peut être intégré directement au sein des pages Web, pour y être exécuté sur le poste client. C'est alors le navigateur Web qui prend en charge l'exécution de ces petits bouts de programmes appelés scripts.

Généralement, JavaScript sert à contrôler les données saisies dans des formulaires HTML, ou à interagir avec le document HTML via l'interface DOM, fournie par le navigateur (on parle alors parfois d'HTML dynamique). Il est aussi utilisé pour réaliser des services dynamiques, parfois futiles ou strictement cosmétiques.

[modifier] Incompatibilités

Netscape et Microsoft (avec JScript dans Internet Explorer) ont développé leur propre variante de ce langage qui chacune supporte presque intégralement la norme ECMAScript mais possède des fonctionnalités supplémentaires et incompatibles, rarement utilisées dans le cadre de la programmation de pages Web. Pourtant les scripts JavaScript sont souvent la source de difficultés. Le plus souvent, elles sont dues non à des problèmes de portabilité du langage, les différentes mises en œuvre respectant assez bien la norme ECMAScript, mais au support des différentes versions des modèles d'objets (DOM) fournis par les navigateurs.

Face à ce problème on utilise souvent une construction du type :

 if (monObjet.methode) { ....
                            monObjet.methode();
                       }

On vérifie ainsi que monObjet a bien une mise en œuvre de methode que l'on peut alors utiliser. Le plus souvent, si un navigateur ne gère pas la methode de monObjet, il gère une méthode comparable methode2, et on peut alors adapter le code JavaScript au navigateur qui l'exécute:

 if (monObjet.methode) { ....
                            monObjet.methode();
                       }
 else if (monObjet.methode2) { ....
                            monObjet.methode2();
                       }

[modifier] AJAX

JavaScript est actuellement (novembre 2005) un des composants essentiels de la « technologie » AJAX (Asynchronous Javascript And XML). La plupart des applications AJAX utilisent l'objet XMLHTTPRequest (XHR) pour envoyer une requête à un script serveur, et parser dynamiquement les résultats de ce dernier via DOM. Les versions d'Internet Explorer antérieures à la 7 ne géraient pas l'objet XHR mais proposaient un contrôle ActiveX équivalent (à partir de la version 5), ce qui impose des fourches dans le code, tel que montré ci-dessus.

AJAX est une des technologies phares du mouvement Web 2.0 qui définit les interfaces riches permettant à l'internaute une plus grande interactivité avec la page web.

pour en savoir plus

[modifier] JSON

JSON (JavaScript Object Notation) est un format utilisant la notation des objects JavaScript pour transmettre de l'information structurée.

[modifier] Évènements

Javascript permet de contrôler les évènements se produisant dans le contexte d'un document. Ces évènements sont :

  • onabort
  • onblur
  • onchange
  • onclick
  • ondblclick
  • onerror
  • onfocus
  • onkeydown
  • onkeypress
  • onkeyup
  • onload
  • onmousedown
  • onmousemove
  • onmouseout
  • onmouseover
  • onmouseup
  • onreset
  • onresize
  • onselect
  • onsubmit
  • onunload

(Voir la référence évènements du W3schools)

[modifier] Evènements serveur

Le WHATWG travaille actuellement sur une technologie permettant d'associer des gestionnaires d'évènements avec des évènements initiés par le serveur. Ceux-ci permettent, de manière "propre", de concevoir des applications client-serveur, et de modifier le contenu d'une page non plus en fonction des actions de l'utilisateurs mais d'évènements gérés par le serveur. Le premier navigateur mettant en œuvre cette possibilité est Opera (version 9), ainsi qu'annoncé dans Event Streaming to Web Browsers.

(Voir également en:COMET (programming) pour une mise en œuvre utilisant les moyens actuellement disponibles afin d'obtenir ce comportement.)

[modifier] Autres utilisations

JavaScript peut également être utilisé comme langage de programmation sur un serveur HTTP. Initialement, il était proposé sur les serveurs de Netscape, par la suite distribués par Sun Microsystems sous les noms iPlanet et Sun ONE, mais JScript peut aussi être utilisé sur les serveurs IIS de Microsoft. JScript peut d'ailleurs servir pour scripter une plateforme Microsoft Windows via WSH.

On peut encore citer ActionScript, utilisé dans Macromedia Flash qui est aussi une mise en œuvre d'ECMAScript. Il permet de manipuler tous les éléments de l'animation, considérés comme des objets.

JavaScript est enfin utilisé dans la plateforme de développement Mozilla, sur laquelle sont basés plusieurs logiciels comme des navigateurs Web, pour des tâches relatives à l'interface utilisateur et de communication interne (Exemple : les extensions de Firefox et Thunderbird sont installées à base de fichiers Xpi utilisant le JavaScript). Depuis 2004, l'objet "js" de l'environnement de programmation graphique Max/MSP, permet d'ouvrir une fenêtre pour programmer en JavaScript, au sein même d'un programme Max/MSP.

JavaScript est aussi utilisé dans un contenu BIFS pour l'exploitation des événements. Pour cela la spécification BIFS fourni un nœud Script pour incorporer de l'ECMAScript.

Javascript peut être utilisé pour scripter les applications Adobe (Photoshop, illustrator...) ce qui permet d'avoir des script indépendant de la plateforme (Mac/Windows).

[modifier] Particularités du langage

[modifier] Fonctions anonymes

Une fonction anonyme est, comme son nom l'indique, une fonction qui n'est pas identifiée par un nom.

Exemple 1:

 var maFonction = function(message) {
   alert(message);
 }
 maFonction('ceci est un test'); // affiche: ceci est un test

Exemple 2:

<html>
  <body onload="setTimeout( function() { alert( 'chargement de la page terminé il y a une seconde et demi' ) }, 1500 );">
  </body>
</html>

[modifier] Closures

Les closure(en) (fermeture(fr)) sont une caractéristique aussi puissante que méconnue du langage ECMAScript. Il s'agit de la possibilité, pour une expression, d'accéder à des variables qui ne sont plus à sa portée.

Exemple de closure:

 function ajouteur(nombre) {
   function ajoute(valeur) {
     return valeur + nombre;
   }
   
   return ajoute;
 }
 var ajoute10 = ajouteur(10);
 ajoute10(1); // retourne 11

Dans l'exemple ci-dessus, la fonction interne ajoute10 a toujours accès à l'argument nombre malgré le fait que l'appel à la fonction ajouteur soit terminé.

[modifier] Prototypes

Un prototype est un objet JavaScript qui est utilisé lors d'un échec de résolution d'un nom sur son objet parent. Ce mécanisme est un type d'héritage : l'héritage par prototype.

function MonPrototype() {
  this.a = 1;
  this.b = function() {
    return 'prototype';
  }
  this.e = 3;
}
function MaClasse() {
  this.c = 2;
  this.d = function() {
    return 'classe';
  } 
  this.e = 4;
}
MaClasse.prototype = new MonPrototype();
monObjet = new MaClasse();
monObjet.a;   // 1
monObjet.b(); // 'prototype'
monObjet.c;   // 2
monObjet.d(); // 'classe'
monObjet.e;   // 4

[modifier] Séparation des instructions

En C (comme auparavant en Pascal), chaque instruction se termine par un point-virgule. Cette pratique a fait du point-virgule une obligation dans de nombreux langages inspirés de la syntaxe du C.

JavaScript est plus souple, permettant à une fin de ligne de marquer implicitement la fin d'une instruction. Le but est de faciliter l'usage du langage aux personnes inexpérimentées en programmation informatique. Mais cette souplesse introduit des effets innattendus :

 return
   true;

Le parseur JavaScript comprend cela comme deux instructions :

 return;
 true;

alors que le programmeur pensait plus probablement à la seule instruction :

 return true;

Les ouvrages de programmation avancés en JavaScript mettent en garde contre les effets inattendus de la déduction automatique de fin d'instruction et conseillent d'écrire un point-virgule à la fin de chaque instruction.[1]

  1. Cet exemple est donné page 25 par : JavaScript - The Definitive Guide, Fourth Edition, David Flanagan, éditions O'Reilly Media, Sebastopol, Californie.

[modifier] E4X

Les versions récentes de la mise en œuvre du langage JavaScript de SpiderMonkey supportent l'E4X Il s'agit d'un support natif de l'XML ainsi que d'un support natif d'une syntaxe d'accès aux données XML (sorte de XPath)

Exemple:

var xml = <menu id="file" value="File">
  <popup>
    <menuitem value="New" onclick="CreateNewDoc()" />
    <menuitem value="Open" onclick="OpenDoc()" />
    <menuitem value="Close" onclick="CloseDoc()" />
  </popup>
</menu>

Exemple d'accès aux données:

xml.popup.menuitem.(@value == 'New').@onclick  

L'exemple ci-dessus récupère la fonction correspondant à l'action "New". Le résultat de l'évaluation est "CreateNewDoc()"

Autre exemple:

var item = 2;
xml.popup.menuitem[item].@value

Le résultat de l'évaluation est "Close"

[modifier] Voir aussi

[modifier] Références

  1. Cet exemple est donné page 25 par : JavaScript - The Definitive Guide, Fourth Edition, David Flanagan, éditions O'Reilly Media, Sebastopol, Californie.

[modifier] Liens externes

[modifier] Références JavaScript et JScript

[modifier] Tutoriels

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Sub-domains

CDRoms - Magnatune - Librivox - Liber Liber - Encyclopaedia Britannica - Project Gutenberg - Wikipedia 2008 - Wikipedia 2007 - Wikipedia 2006 -

Other Domains

https://www.classicistranieri.it - https://www.ebooksgratis.com - https://www.gutenbergaustralia.com - https://www.englishwikipedia.com - https://www.wikipediazim.com - https://www.wikisourcezim.com - https://www.projectgutenberg.net - https://www.projectgutenberg.es - https://www.radioascolto.com - https://www.debitoformtivo.it - https://www.wikipediaforschools.org - https://www.projectgutenbergzim.com