Obsolete
This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.

Obsolete JavaScript features and unmaintained docs

arguments.caller
The obsolete arguments.caller property used to provide the function that invoked the currently executing function. This property has been removed and no longer works.
Array comprehensions
The array comprehension syntax was a JavaScript expression which allowed you to quickly assemble a new array based on an existing one. However, it has been removed from the standard and the Firefox implementation. Do not use it!
Array.observe()
The Array.observe() method was used for asynchronously observing changes to Arrays, similar to Object.observe() for objects. It provided a stream of changes in order of occurrence. It's equivalent to Object.observe() invoked with the accept type list ["add", "update", "delete", "splice"]. However, this API has been deprecated and removed from Browsers. You can use the more general Proxy object instead.
Array.unobserve()
The Array.unobserve() method was used to remove observers set by Array.observe(), but has been deprecated and removed from Browsers. You can use the more general Proxy object instead.
ArrayBuffer.transfer()
The static ArrayBuffer.transfer() method returns a new ArrayBuffer whose contents have been taken from the oldBuffer's data and then is either truncated or zero-extended by newByteLength. If newByteLength is undefined, the byteLength of the oldBuffer is used. This operation leaves oldBuffer in a detached state.
Date.prototype.toLocaleFormat()
The non-standard toLocaleFormat() method converts a date to a string using the specified formatting. Intl.DateTimeFormat is an alternative to format dates in a standards-compliant way. See also the newer version of Date.prototype.toLocaleDateString().
ECMAScript 2016 to ES.Next support in Mozilla
Expression closures
Expression closures are a shorthand function syntax for writing simple functions.
for each...in
The for each...in statement iterates a specified variable over all values of object's properties. For each distinct property, a specified statement is executed.
Function.arity
Not part of any standard.
Function.prototype.isGenerator()
The non-standard isGenerator() method used to determine whether or not a function is a generator. It has been removed from Firefox starting with version 58.
Generator comprehensions
The generator comprehension syntax was a JavaScript expression which allowed you to quickly assemble a new generator function based on an existing iterable object. However, it has been removed from the standard and the Firefox implementation. Do not use it!
handler.enumerate()
The handler.enumerate() method used to be a trap for for...in statements, but has been removed from the ECMAScript standard in ES2016 and is deprecated in browsers.
Legacy generator function
The legacy generator function statement declares legacy generator functions with the specified parameters.
Legacy generator function expression
The function keyword can be used to define a legacy generator function inside an expression. To make the function a legacy generator, the function body should contain at least one yield expression.
Microsoft JavaScript extensions
Microsoft browsers (Internet Explorer, and in a few cases, Microsoft Edge) support a number of special Microsoft extensions to the otherwise standard JavaScript APIs.
New in JavaScript
This chapter contains information about JavaScript's version history and implementation status for Mozilla/SpiderMonkey-based JavaScript applications, such as Firefox.
Number.toInteger()
The Number.toInteger() method used to evaluate the passed value and convert it to an integer, but its implementation has been removed.
Object.getNotifier()
The Object.getNotifer() method was used to create an object that allows to synthetically trigger a change, but has been deprecated and removed in browsers.
Object.observe()
The Object.observe() method was used for asynchronously observing the changes to an object. It provided a stream of changes in the order in which they occur. However, this API has been deprecated and removed from browsers. You can use the more general Proxy object instead.
Object.prototype.__count__
The __count__ property used to store the count of enumerable properties on the object, but it has been removed.
Object.prototype.__noSuchMethod__
The __noSuchMethod__ property used to reference a function to be executed when a non-existent method is called on an object, but this function is no longer available.
Object.prototype.__parent__
The __parent__ property used to point to an object's context, but it has been removed.
Object.prototype.eval()
The Object.eval() method used to evaluate a string of JavaScript code in the context of an object, however, this method has been removed.
Object.prototype.unwatch()
The unwatch() method removes a watchpoint set with the watch() method.
Object.prototype.watch()
The watch() method watches for a property to be assigned a value and runs a function when that occurs.
Object.unobserve()
The Object.unobserve() method was used to remove observers set by Object.observe(), but has been deprecated and removed from Browsers. You can use the more general Proxy object instead.
Reflect.enumerate()
The static Reflect.enumerate() method used to return an iterator with the enumerable own and inherited properties of the target object, but has been removed in ECMAScript 2016 and is deprecated in browsers.
String.prototype.quote()
The non-standard quote() method returns a copy of the string, replacing various special characters in the string with their escape sequences and wrapping the result in double-quotes (").