Deprecated and obsolete features
================================

This page lists features of JavaScript that are deprecated (that is, still available but planned for removal) and obsolete (that is, no longer usable).

Deprecated features
-------------------

These deprecated features can still be used, but should be used with caution because they are expected to be removed entirely sometime in the future. You should work to remove their use from your code.

### RegExp properties

The following properties are deprecated. This does not affect their use in replacement strings:

| Свойство | Описание |
| --- | --- |
| `$1-$9` | Parenthesized substring matches, if any. **Warning:** Using these properties can result in problems, since browser extensions can modify them. Avoid them! |
| `$_` | Смотрите `input`. |
| `$*` | Смотрите `multiline`. |
| `$&` | Смотрите `lastMatch`. |
| `$+` (en-US) | Смотрите `lastParen`. |
| `$`` (en-US) | Смотрите `leftContext`. |
| `$'` (en-US) | Смотрите `rightContext`. |
| `input` | The string against which a regular expression is matched. |
| `lastMatch` | The last matched characters. |
| `lastParen` (en-US) | The last parenthesized substring match, if any. |
| `leftContext` (en-US) | The substring preceding the most recent match. |
| `rightContext` (en-US) | The substring following the most recent match. |

The following are now properties of `RegExp` instances, no longer of the `RegExp` object:

| Свойство | Описание |
| --- | --- |
| `global` | Whether or not to test the regular expression against all possible matches in a string, or only against the first. |
| `ignoreCase` | Whether or not to ignore case while attempting a match in a string. |
| `lastIndex` | The index at which to start the next match. |
| `multiline` | Whether or not to search in strings across multiple lines. |
| `source` | The text of the pattern. |

### RegExp methods

* The `compile()` (en-US) method is deprecated.
* The `valueOf` method is no longer specialized for `RegExp`. Use `Object.valueOf()`.
### Function properties

* The `caller` and `arguments` properties are deprecated, because they leak the function caller. Instead of the arguments property, you should use the `arguments` object inside function closures.
### Legacy generator

* `Legacy generator function statement` (en-US) and `Legacy generator function expression` (en-US) are deprecated. Use `function* statement` and `function* expression` instead.
* `JS1.7/JS1.8 Array comprehension` (en-US) and `JS1.7/JS1.8 Generator comprehension` (en-US) are deprecated.
### Iterator

* `StopIteration` устарел.
* `Iterator` (en-US) устарел.
### Object methods

* `watch` and `unwatch` are deprecated. Use `Proxy` instead.
* `__iterator__` устарел.
* `Object.prototype.__noSuchMethod__` is deprecated. Use `Proxy` instead.
### Методы даты

* `getYear` и `setYear` are affected by the Year-2000-Problem and have been subsumed by `getFullYear` и `setFullYear`.
* You should use `toISOString` instead of the deprecated `toGMTString` (en-US) method in new code.
* `toLocaleFormat` is deprecated.
### Functions

* Expression closures are deprecated. Use regular `functions` or arrow functions instead.
### Proxy

* Proxy.create and Proxy.createFunction are deprecated. Use `Proxy` instead.
* The following traps are obsolete:
    + `hasOwn` (Firefox bug 980565, Firefox 33).
    + `getEnumerablePropertyKeys` (Firefox bug 783829, Firefox 37)
    + `getOwnPropertyNames` (Firefox bug 1007334, Firefox 33)
    + `keys` (Firefox bug 1007334, Firefox 33)
### Escape sequences

* Octal escape sequences (\ followed by one, two, or three octal digits) are deprecated in string and regular expression literals.
* The `escape` and `unescape` functions are deprecated. Use `encodeURI`, `encodeURIComponent`, `decodeURI` or `decodeURIComponent` to encode and decode escape sequences for special characters.
### Методы строк

* HTML wrapper methods like `String.prototype.fontsize` and `String.prototype.big`.
* `String.prototype.quote` is removed from Firefox 37.
* non standard `flags` parameter in `String.prototype.search`, `String.prototype.match`, and `String.prototype.replace` are deprecated.
* `String.prototype.substr` probably won't be removed anytime soon, but it's defined in Annex B of the ECMA-262 standard, whose introduction states: "… Programmers should not use or assume the existence of these features and behaviours when writing new ECMAScript code. …"
Obsolete features
-----------------

These obsolete features have been entirely removed from JavaScript and can no longer be used as of the indicated version of JavaScript.

### Объект

| Свойство | Описание |
| --- | --- |
| `**count**` | Returns the number of enumerable properties directly on a user-defined object. |
| `**parent**` | Points to an object's context. |
| `Object.prototype.eval()` | Evaluates a string of JavaScript code in the context of the specified object. |
| `Object.observe()` | Asynchronously observing the changes to an object. |
| `Object.unobserve()` | Remove observers. |
| `Object.getNotifier()` | Creates an object that allows to synthetically trigger a change. |

### Function

| Свойство | Описание |
| --- | --- |
| `arity` | Number of formal arguments. |

### Массив

| Свойство | Описание |
| --- | --- |
| `Array.observe()` | Асинхронный просмотр изменений в массивах. |
| `Array.unobserve()` | Remove observers. |

### Число

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

* `ParallelArray`
### Statements

* `for each...in` is deprecated. Use `for...of` instead.
* Destructuring `for...in` is deprecated. Use `for...of` instead.
* let blocks and let expressions are obsolete.
### E4X

Смотрите E4X.

### Sharp variables

Смотрите Sharp variables in JavaScript.