[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features [Back]  [Original]

Fonctionnalits dprcies et obsoltes - JavaScript | MDN

Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.

View in English Always switch to English

Fonctionnalits dprcies et obsoltes

Cette page liste les fonctionnalits de JavaScript qui sont dprcies (c'est--dire encore disponibles mais prvues pour tre supprimes) et obsoltes (c'est--dire plus utilisables).

Dans cet article

Fonctionnalits dprcies

Ces fonctionnalits dprcies peuvent encore tre utilises, mais doivent tre utilises avec prudence, car elles ne sont pas obligatoirement implmentes par tous les moteurs JavaScript. Vous devez travailler les supprimer de votre code.

Certaines de ces fonctionnalits dprcies sont listes dans la section Annexe B (angl.) de la spcification ECMAScript. Cette section est dcrite comme normative optionnelle c'est--dire que les navigateurs web doivent implmenter ces fonctionnalits, tandis que les htes non web peuvent ne pas le faire. Ces fonctionnalits sont probablement stables, car les supprimer provoque des problmes de compatibilit ascendante et casse les sites web existants. (JavaScript a pour objectif de conception de  ne pas casser le web .) Cependant, elles ne sont pas portables sur toutes les plateformes et peuvent ne pas tre prises en charge par tous les outils d'analyse, il est donc conseill de ne pas les utiliser, comme l'introduction de l'Annexe B l'indique :

Toutes les fonctionnalits et tous les comportements du langage dcrits dans la prsente annexe prsentent une ou plusieurs caractristiques indsirables et, en l'absence d'usage historique, sont supprims de la prsente spcification.

Les programmeureuses ne doivent pas utiliser ou supposer l'existence de ces fonctionnalits et comportements lors de l'criture de nouveau code ECMAScript.

Certaines autres, bien que dans le corps principal de la spcification, sont galement marques comme normatives optionnelles et ne doivent pas tre utilises de manire dpendante.

Commentaires HTML

Le code source JavaScript, s'il est analys comme des scripts, permet des commentaires de type HTML, comme si le script fait partie d'une balise <script>.

Le code suivant est un JavaScript valide lorsqu'il est excut dans un navigateur web (ou Node.js, qui utilise le moteur V8 de Chrome) :

js
<!-- commentaire
console.log("a"); <!-- un autre commentaire
console.log("b");
--> Plus de commentaires
// Affiche "a" et "b"

<!-- et --> agissent tous deux comme //, c'est--dire comme des commentaires sur une ligne. --> n'est valide qu'au dbut d'une ligne (pour viter toute ambigut avec un dcrment postfix suivi d'un oprateur suprieur), tandis que <!-- peut apparatre n'importe o dans la ligne.

Proprits de RegExp

Les proprits suivantes sont dprcies. Cela n'affecte pas leur utilisation dans les chanes de caractres de remplacement :

$1-$9

Sous-chanes de caractres entre parenthses, si elles existent.

input, $_

La chane de caractres par rapport laquelle une expression rationnelle est compare.

lastMatch, $&

La dernire sous-chane de caractres correspondante.

lastParen, $+

La dernire sous-chane de caractres entre parenthses, si elle existe.

leftContext, $`

La sous-chane de caractres prcdant la correspondance la plus rcente.

rightContext, $'

La sous-chane de caractres suivant la correspondance la plus rcente.

Attention : vitez d'utiliser ces proprits statiques, car elles peuvent causer des problmes lors de l'interaction avec du code externe (angl.) !

La mthode compile() est dprcie. Il est recommand de crer une nouvelle instance de RegExp la place.

Les syntaxes regex suivantes sont dprcies et ne sont disponibles qu'en mode insensible Unicode. En mode sensible Unicode, elles sont toutes des erreurs de syntaxe :

  • Les assertions anticipes peuvent avoir des quantificateurs.
  • Les rtro-rfrences qui ne se rfrent pas un groupe capturant existant deviennent des chappements octaux hrits.
  • Dans les classes de caractres, les plages de caractres o une limite est une classe de caractres font que le - devient un caractre littral.
  • Une squence d'chappement non reconnue devient un  chappement d'identit .
  • Les squences d'chappement dans les classes de caractres de la forme \cX o X est un chiffre ou _ sont dcodes de la mme manire que celles avec des lettres ASCII : \c0 est identique \cP lorsqu'on prend le modulo 32. De plus, si la forme \cX est rencontre n'importe o o X n'est pas l'un des caractres reconnus, alors la barre oblique inverse est trait comme un caractre littral.
  • La squence \k dans une regex qui n'a pas de groupes capturant nomms est traite comme un chappement d'identit.
  • Les caractres de syntaxe ], {, et } peuvent apparatre littralement sans chappement s'ils ne peuvent pas tre interprts comme la fin d'une classe de caractres ou des dlimiteurs de quantificateur.

Proprits de Function

  • La proprit caller des fonctions et la proprit arguments.callee sont dprcies et indisponibles en mode strict.
  • Au lieu d'accder arguments en tant que proprit d'une fonction, vous devez utiliser l'objet arguments l'intrieur des fermetures de fonction.

Proprits et mthodes de Object

Proprits de String

Mthodes de Date

Squences d'chappement

Instructions

L'instruction with est dprcie et indisponible en mode strict.

Les initialisateurs dans les dclarations var des en-ttes de boucles forin sont dprcis et produisent des erreurs de syntaxe en mode strict. L'expression d'initialisation est value et affecte la variable, mais la valeur est immdiatement raffecte lors de la premire itration de la boucle.

Normalement, le bloc catch d'une instruction trycatch ne peut contenir aucune dclaration de variable portant le mme nom que les variables lies dans le catch(). Une grammaire tendue permet au bloc catch de contenir une variable dclare avec var portant le mme nom que l'identifiant li au catch, mais uniquement si la liaison catch est un identifiant simple, et non un modle de dstructuration. Cependant, l'initialisation et l'affectation de cette variable n'agissent que sur l'identifiant li au catch, au lieu de la variable de porte suprieure, et le comportement peut tre droutant.

js
var a = 2;
try {
  throw new Error();
} catch (a) {
  var a = 1; // Cette valeur 1 est affecte  `a` qui est attrap, pas au `a` extrieur.
}
console.log(a); // 2

try {
  throw new Error();
  // Note : l'identifiant a t chang en `err` pour viter le conflit
  // avec la dclaration interne de `a`.
} catch (err) {
  var a = 1; // Cette valeur 1 est affecte  `a` de la porte suprieure.
}
console.log(a); // 1

Cela est rpertori dans l'annexe B de la spcification et peut donc ne pas tre implment partout. vitez tout conflit de noms entre l'identifiant li au catch et les variables dclares dans le bloc catch.

Fonctionnalits obsoltes

Ces fonctionnalits obsoltes ont t entirement supprimes de JavaScript et ne peuvent plus tre utilises partir de la version indique de JavaScript.

Proprits de RegExp

Les lments suivants sont dsormais des proprits des instances de RegExp, et non plus du constructeur RegExp :

Proprit Description
global Indique si l'expression rationnelle doit tre teste contre toutes les correspondances possibles dans une chane de caractres, ou seulement contre la premire.
ignoreCase Indique si la casse doit tre ignore lors de la tentative de correspondance dans une chane de caractres.
lastIndex L'index partir duquel commencer la prochaine correspondance.
multiline (galement avec RegExp.$*) Indique si la recherche doit s'effectuer sur plusieurs lignes.
source Le texte du motif.

La mthode valueOf() n'est plus spcialise pour RegExp. Elle utilise Object.prototype.valueOf(), qui retourne elle-mme.

Proprits de Function

  • La proprit arity des fonctions est obsolte. Utilisez length la place.

Proprits de Object

Proprit Description Alternative
__count__ Retourne le nombre de proprits numrables directement disponible sur un objet dfini par l'utilisateurice. Object.keys()
__parent__ Pointe vers le contexte d'un objet. Pas de remplacement direct
__iterator__ Utilis avec les itrateurs hrits. Symbol.iterator et les nouveaux protocoles d'itration
__noSuchMethod__ Une mthode appele lorsqu'une proprit inexistante est appele en tant que mthode. Proxy
Object.prototype.eval() value une chane de caractres de code JavaScript dans le contexte de l'objet dfini. Pas de remplacement direct
Object.observe() Observation asynchrone des changements d'un objet. Proxy
Object.unobserve() Supprime les observateurs. Proxy
Object.getNotifier() Cre un objet notificateur qui permet de dclencher de manire synthtique un changement observable avec Object.observe(). Pas de remplacement direct
Object.prototype.watch() Attache un gestionnaire de fonction de rappel une proprit qui est appel lorsque la proprit est assigne. Proxy
Object.prototype.unwatch() Supprime les gestionnaires de surveillance sur une proprit. Proxy

Mthodes de String

Mthodes de WeakMap

  • WeakMap.prototype.clear() a t ajout dans Firefox 20 et supprim dans Firefox 46. Il n'est pas possible de parcourir toutes les cls dans un WeakMap.

Mthodes de Date

  • Date.prototype.toLocaleFormat(), qui utilisait une chane de caractres de format dans le mme format attendu par la fonction strftime() en C, est obsolte. Utilisez toLocaleString() ou Intl.DateTimeFormat la place.

Mthodes de Array

  • Les mthodes gnriques non standard de Array comme Array.slice(myArr, 0, 12), Array.forEach(myArr, myFn), etc. ont t introduites dans Firefox 1.5 (JavaScript 1.6), dprcies dans Firefox 68 et supprimes dans Firefox 71. Vous pouvez utiliser les mthodes sur Array.prototype avec Function.call() la place.
Proprit Description Alternative
Array.observe() Observation asynchrone des modifications des tableaux. Proxy
Array.unobserve() Supprimer les observateurs. Proxy

Mthodes de Number

Mthodes de Proxy

L'objet ParallelArray

  • ParallelArray est obsolte.

Instructions

  • for each...in est obsolte. Utilisez for...of la place.
  • Les blocs let et les expressions let sont obsoltes.
  • Les closures d'expression (function () 1 comme raccourci de function () { return 1; }) sont obsoltes. Utilisez des function rationnelles ou des fonctions flches la place.

Acquisition du texte source

Les mthodes toSource() des tableaux, nombres, chanes de caractres, etc. et la fonction globale uneval() sont obsoltes. Utilisez toString(), ou crivez votre propre mthode de srialisation la place.

Gnrateurs et itrateurs hrits

Les instructions de fonction gnratrice hrite et les expressions de fonction gnratrice hrite sont supprimes. La syntaxe de fonction gnratrice hrite rutilise le mot-cl function, qui devient automatiquement une fonction gnratrice lorsqu'il y a une ou plusieurs expressions yield dans le corps c'est maintenant une erreur de syntaxe. Utilisez les instructions function* et les expressions function* la place.

Les comprhensions de tableau et les comprhensions de gnrateur sont supprimes.

js
// Comprhensions de tableau hrites
[for (x of iterable) x]
[for (x of iterable) if (condition) x]
[for (x of iterable) for (y of iterable) x + y]

// Comprhensions de gnrateur hrites
(for (x of iterable) x)
(for (x of iterable) if (condition) x)
(for (x of iterable) for (y of iterable) x + y)

Firefox, avant la version 26, a implment un autre protocole d'itrateur similaire au protocole d'itration standard. Un objet est un itrateur hrite lorsqu'il implmente une mthode next(), qui produit une valeur chaque appel et lance un objet StopIteration la fin de l'itration. Ce protocole d'itrateur hrite diffre du protocole d'itrateur standard :

  • La valeur tait retourne directement comme valeur de retour des appels next(), au lieu de la proprit value de l'objet IteratorResult.
  • La fin de l'itration tait exprime en lanant un objet StopIteration, au lieu d'utiliser la proprit done de l'objet IteratorResult.

Cette fonctionnalit, ainsi que le constructeur global StopIteration, ont t supprims dans Firefox 58+. Pour les utilisations futures, envisagez d'utiliser les boucles forof et le protocole d'itration.

Variables dise

Les variables dise sont obsoltes. Pour crer des structures circulaires, utilisez plutt des variables temporaires.


Web Proxy Viewer  |  New URL  |  Original Page