Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Que nous réserve le futur de JavaScript ?
Un ingénieur de Mozilla détaille les nouveautés d'ECMAScript 6

Le , par Idelways

0PARTAGES

3  0 


Dave Herman, ingénieur à Mozilla Labs et membre du TC39, était présent à la conférence YUIConf 2011 pour une présentation inédite de ce que nous réserve le futur du standard ECMAScript et du langage JavaScript.

Cette spécification ne sera pas finalisée avant 2013, mais des implémentations devraient bientôt voir le jour sur Firefox et Chrome. Le support d'ECMAScript 6 sur ce dernier profitera de facto au framework Node.js articulé autour du moteur V8.

Herman a souligné en début de keynote qu'une grande partie de ces nouveautés vient remplacer le code passe-partout que les développeurs JavaScript doivent placer un peu partout dans leur nouveau projet.

Ainsi naîtra la notion de Module en JavaScript pour lever l'obligation d'encapsuler son code dans une fonction anonyme afin d'éviter la propagation de variables globales.
Ces modules pourront être importés via code bloquant que le parseur parcours à la recherche d'instructions imports. Les fichiers ainsi appelés seront chargés sans devoir écrire en dur d'autres balises <script> et jouer avec le DOMReady.

Code javascript : Sélectionner tout
1
2
3
4
5
6
module Collections{ 
  export function Dict(){} 
  
  import { $ } from "jquery.js" 
  import { map, each } from "underscore.js" 
}

Dave Herman a aussi réintroduit le mot clé let, qui revient dans le processus de standardisation des années après son annulation pour ECMAScript 4.
Il se positionne comme une alternative complémentaire de var, évitant les erreurs récurrentes où une variable déclarée dans une fonction se retrouve hors de portée dans une fonction fille.

Let permettra des assignations collectives non strictes, rendant cette écriture de code possible : let [x,y] = [3,4,5]; // x=3, y = 4.

Notons aussi l'arrivée des valeurs par défaut des fonctions, évitant le recours systématique au passage d'objets d'options, souvent fusionnés avec d'autres objets JSON portant les valeurs par défaut en tout début d'une méthode.

Toujours dans l'optique d'épargner aux développeurs du code passe-partout, Herman a évoqué le nouveau mot-clé « yield » qui permettra de stopper l'exécution d'une méthode jusqu'au prochain appel à method.next().

Cette notion de « fonctions génératrices » permet d'éviter les « pyramides de ruines », comme les décrit Herman. Ces structures imbriquées qui résultent de la nécessité de n'exécuter une partie du code que lorsqu'une autre a fini son travail (le cas d'une requête asynchrone par exemple).

Fini le callback spaghetti !

Code javascript : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
spawn(function*(){ 
  // Notez l'étoile qui distingue les fonctions génératrices 
  
  var foo = yield read('foo.txt'), 
  var bar = yield read('bar.txt'), 
  var baz = yield read('baz.txt'), 
  
  yield sleep(1000); 
  status.innerHTML = foo + bar + baz 
});

ECMAScript 6 introduira aussi les chaînes de caractères multilignes, entourées d'accents graves (`).

Code javascript : Sélectionner tout
1
2
3
var htmlString = `Say hello to  
multi-line 
strings!`

JavaScript aura aussi des objets proxy capables de contrôler tout ce qui se passe dans les méthodes qu'ils encapsulent. Notons aussi l'interpolation des chaines.

Code javascript : Sélectionner tout
1
2
var firstName = "Jack"; 
var message = `Hello ${firstName}!`; // "Hello Jack!"


Et bien d'autres nouveautés à découvrir en détail sur la vidéo de l'évènement :



Et vous ?

Que pensez-vous de ces nouveautés d'ECMAScript 6 ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Bovino
Rédacteur https://www.developpez.com
Le 30/11/2011 à 12:11
Citation Envoyé par ugo-sans-h
toujours pas d'objet avec js...
Euh... tu plaisantes j'espère
7  1 
Avatar de ithel
Membre averti https://www.developpez.com
Le 30/11/2011 à 10:14
Que nous réserve le futur de JavaScript ?
Du sang, de la sueur et des larmes (désolé, trop tentant)
4  0 
Avatar de Camille_B
Membre confirmé https://www.developpez.com
Le 01/12/2011 à 16:49
Javascript est un langage objet.

Point final.

Un langage objet à prototype et non un langage objet à classes.

Y a pas que le modèle C++/Java dans le monde de l'objet hein !

Allez jeter un oeil sur CLOS le système objet de Common Lisp, ou alors le système objet Moose pour Perl, ça permet de se nettoyer un peu le cerveau.
5  1 
Avatar de camus3
Membre éprouvé https://www.developpez.com
Le 30/11/2011 à 1:21
Oui enfin XP n'est plus qu'en support étendu, ça fait un moment qu'ils l'ont annoncé qu'ils ne supportaient plus XP. Tôt ou tard faudra que les gens changent quand même.
et alors ? les gens changent d'os uniquement quand ils changent de pc , et cela n'empeche en rien Microsoft de sortir une version d'IE 9 ou 10 pour XP.
Je n'acheterai pas pas W8. je ne pourrai donc pas utilisé IE 10 ? je ne vois pas pourquoi je devrai racheter windows pour upgrader mon navigateur , c'est un choix purement commercial et pas du tout technique qui frêne l'adoptions des standards tant loués par les "évangélistes". Microsoft n'en a rien à faire de "promouvoir" les standards , c'est juste du marketing. L'api javascript de Metro par exemple est non standard , Ecmascript 5 dans IE9 n'est pas standard non plus puisqu'il ne propose pas de strictmode.
5  2 
Avatar de lilington
Membre chevronné https://www.developpez.com
Le 02/12/2011 à 4:22
Citation Envoyé par chok371 Voir le message
Exact, mais sa gestion des objets est trop pauvre et incomplète pour travailler sur de gros projets avec efficacité (par exemple développer un Jeu).
Qui a dit que pour faire des jeux il fallait de l'objet?
Je comprend pas pourquoi beaucoup de gens pense que Objet=bien, procedural=has been.

c'est deux approches differente. Je sais je suis dans la pensee de Linus T. qui deteste l'objet sauf que moi je ne deteste pas l'objet mais ceux qui pense que l'objet c'est mieux, l'objet c'est obligatoire pour bien faire.
bref tout ca pour dire que l'argument
Code : Sélectionner tout
JS n'est meme pas objet
pour le denigrer est totalement ridicule qu'il soit objet ou non, ca demontre juste qu'on a affaire a un programmeur du dimanche bourre de certitudes et qui pense que ce que lui il utilise c'est mieux que ce que les autres utilises.

fin du coup de gueule.
3  0 
Avatar de grunk
Modérateur https://www.developpez.com
Le 29/11/2011 à 17:17
C'est bien sympa tout ça, mais quand on voit que IE10 prévoit l'implémentation de ECMAScript 5 , on est pas près de pouvoir gouter au joies de ces nouveautés en production :'(
2  0 
Avatar de camus3
Membre éprouvé https://www.developpez.com
Le 29/11/2011 à 23:43
il va falloir que Microsoft change sa politique en matière de navigateurs , que les clients puissent upgrader leur navigateurs quelque soit l'os utilisé ( I installer I.E X sous Xp par exemple ) .c'est un frein à l'adoption des nouvelles specs du web. Microsoft a une politique ambiguë à propos des "standards".
3  1 
Avatar de Camille_B
Membre confirmé https://www.developpez.com
Le 02/12/2011 à 17:11
Généralement les personnes qui jugent un langage à sa capacité à gérer l'objet (et encore qu'un seul modèle objet !), ne maîtrisent même pas vraiment la programmation orientée objet.

Ils sont tellement content d'avoir réussi à assimiler la chose qu'ils s'enorgueillissent et se font un plaisir de bêtement taper sur tout ce qui ne ressemble à ce qu'ils ont peiné à apprendre.

Ce serait reconnaître qu'ils ne savent rien, et que tout est toujours à réapprendre.

C'est vrai pour tout, et ça l'est vraiment pour l'informatique.

Javascript est un langage OO, je le répète, et son modèle objet est vraiment puissant.

Mais il n'est pas que cela. La vraie force de Javascript c'est son modèle de fonctions proche de Scheme.

Le principal défaut de Javascript, au fond, c'est d'avoir voulu faire un Scheme pour programmeur C du dimanche. Un Scheme habillé en C quoi, avec deux trois trucs sensés faciliter la vie du développeur débutant qui compliquent plus les choses qu'autre chose.

Mais, au fond, c'est globalement un très très bon langage. Ses qualités surpassent largement ses défauts.
3  1 
Avatar de Neko
Membre chevronné https://www.developpez.com
Le 30/11/2011 à 0:26
Oui enfin XP n'est plus qu'en support étendu, ça fait un moment qu'ils l'ont annoncé qu'ils ne supportaient plus XP. Tôt ou tard faudra que les gens changent quand même.
2  1 
Avatar de damo
Membre à l'essai https://www.developpez.com
Le 30/11/2011 à 9:36
C'est bien maigre tout ça, en tout cas bien insuffisant pour considérer JavaScript à la hauteur d'un langage moderne comme Java, .Net, Python, AS3, etc...
2  1