Fonctionnalités dépréciées
==========================

Cette page liste les fonctionnalités de JavaScript qui sont dépréciées (*deprecated*) (c'est-à-dire que ces fonctionnalités sont toujours disponibles mais qu'il est prévu de les retirer) et les fonctionnalités obsolètes (celles qui ne sont plus utilisables).

Fonctionnalités dépréciées
--------------------------

Ces fonctionnalités dépréciées peuvent toujours être utilisées mais avec une grande attention car elles pourront être supprimées complètements à l'avenir. En règle général, il faut les retirer du code qui les utilise.

### Propriétés de `RegExp`

Les propriétés suivantes sont dépréciées. Cela n'affecte pas le comportement de `replace` lorsqu'on utilise une chaîne de caractères en paramètre de remplacement :

| Propriété | Description |
| --- | --- |
| `$1-$9` | 
 Les sous-chaînes correspondantes s'il y en a.**Attention :** Utiliser ces propriétés peut causer certains problèmes car les
 extensions des navigateurs peuvent les modifier. À éviter !
  |
| `$_` | Voir `input`. |
| `$*` | Voir `multiline`. |
| `$&` | Voir `lastMatch`. |
| `$&` | Voir `lastParen`. |
| `$`` | Voir `leftContext`. |
| `$'` | Voir `rightContext`. |
| `input` | 
 La chaîne par rapport à laquelle on recherche une correspondance grâce à
 l'expression rationnelle.
  |
| `lastMatch` | Les derniers caractères correspondants. |
| `lastParen` | 
 La dernière sous-chaîne (groupe entre parenthèses) correspondante si
 elle existe.
  |
| `leftContext` | La sous-chaîne qui précède la correspondance la plus récente. |
| `rightContext` | La sous-chaîne qui suit la correspondance la plus récente. |

Les propriétés qui suivent sont désormais des propriétés des instances de `RegExp` et ne sont plus des propriétés de l'objet `RegExp` :

| Propriété | Description |
| --- | --- |
| `global` | Permet d'utiliser une expression rationnelle pour relever l'ensemble des correspondances ou uniquement la première. |
| `ignoreCase` | Définit si la casse doit être ignorée ou non lors de la recherche d'une correspondance. |
| `lastIndex` | L'index à partir duquel chercher la prochaine correspondance. |
| `multiline` | Définit si la recherche doit s'effectuer sur une seule ligne ou plusieurs. |
| `source` | Le texte du motif. |

### Méthodes de `RegExp`

* La méthode `compile` est dépréciée.
* La méthode `valueOf` n'est plus spécifiquement liée à `RegExp`. Utilisez `Object.valueOf()`.
### Propriétés de `Function`

* Les propriétés `caller` et `arguments` sont dépréciées car elles permettaient de fuiter l'appelant de la fonction. En lieu et place de la propriété `arguments`, c'est l'objet `arguments` qui doit être utilisée (notamment dans les fermetures).
### Générateur historique

* `L'instruction pour le générateur historique` et `l'expression de fonction du générateur historique` sont dépréciées. Il faut utiliser `L'instruction function*`  et `l'expression function*` à la place.
* `Les compréhensions de tableaux JS1.7/JS1.8` et `les compréhensions de générateurs JS1.7/JS1.8` sont dépréciées.
### Itérateur

* `StopIteration` est déprécié.
* `Iterator` est déprécié.
### Méthode d'`Object`

* `watch` et `unwatch` sont dépréciés. L'objet `Proxy` doit être utilisé à la place.
* `__iterator__` est déprécié.
* `Object.prototype.__noSuchMethod__` est déprécié. `Proxy` doit être utilisé à la place.
### Méthodes de `Date`

* `getYear` et `setYear` sont impactés par le « bug de l'an 2000 » et ont été remplacés par `getFullYear` et `setFullYear`.
* `toISOString` doit être utilisé à la place de la méthode `toGMTString` qui est dépréciée.
* `toLocaleFormat` est dépréciée.
### Fonctions

* Les expressions de fermetures sont dépréciées. Il faut utiliser `function` ou les fonctions fléchées à la place.
### Proxy

* Proxy.create et Proxy.createFunction sont dépréciées. L'API `Proxy` doit être utilisée à la place.
* Les trappes de captures suivantes sont obsolètes :
    + `hasOwn` (bug Firefox 980565, Firefox 33).
    + `getEnumerablePropertyKeys` (bug Firefox 783829, Firefox 37)
    + `getOwnPropertyNames` (bug Firefox 1007334, Firefox 33)
    + `keys` (bug Firefox 1007334, Firefox 33)
### Séquences d'échappement

* Les séquences d'échappement octales (\ suivi par un, deux ou trois chiffres octaux) sont dépréciées pour les chaînes de caractères et les littéraux d'expressions rationnelles.
* Les fonctions `escape` et `unescape` sont dépréciées. Ce sont les méthodes et objets `encodeURI`, `encodeURIComponent`, `decodeURI` ou `decodeURIComponent` qui doivent être utilisées pour encoder/décoder les séquences d'échappement des caractères spéciaux.
### Méthodes de `String`

* Les méthodes d'enrobage HTML telles que `String.prototype.fontsize` et `String.prototype.big` sont dépréciées.
* `String.prototype.quote` a été retiré de Firefox 37.
* Le paramètre non-standard `flags` de `String.prototype.search`, `String.prototype.match`, et `String.prototype.replace` sont dépréciés.
* `String.prototype.substr` ne sera sans doute pas retiré prochainement mais il est défini dans l'annexe B du standard ECMA-262 dont l'introduction précise clairement que « les développeurs ne devraient pass utiliser ou présupposer l'existence de ces fonctionnalités et de ces comportements lors de l'écriture de nouveau code ECMAScript ».
Fonctionnalités obsolètes
-------------------------

Ces fonctionnalités sont obsolètes et ont intégralement été retirées de JavaScript. Elles ne peuvent plus être utilisées.

### Object

* The `Object.prototype.__proto__` accessors are deprecated. Use `Object.getPrototypeOf` and `Object.setPrototypeOf` instead. This does not apply to the `__proto__` literal key in object literals.
* The `Object.prototype.__defineGetter__`, `Object.prototype.__defineSetter__`, `Object.prototype.__lookupGetter__`, and `Object.prototype.__lookupSetter__` methods are deprecated. Use `Object.getOwnPropertyDescriptor` and `Object.defineProperty` instead.
### `Function`

| Propriété | Description |
| --- | --- |
| `arity` | Nombre d'arguments déclarés pour une fonction. |

### `Array`

| Propriété | Description |
| --- | --- |
| `Array.observe()` | Observe les modifications apportées à un tableau de façon asynchrone. |
| `Array.unobserve()` | Retire les observateurs ajoutés à un tableau. |

### `Number`

* `Number.toInteger()`
### `ParallelArray`

* `ParallelArray`
### Instructions

* `for each...in`, utiliser `for...of` à la place.
* La décomposition de variables dans `for...in`, utiliser `for...of` à la place.
* Les blocs et expressions `let` sont obsolètes.
### E4X

Voir la page E4X pour plus d'informations.

### Sharp variables

Voir la page sur les variables « Sharp » en JavaScript pour plus d'informations.