废弃和过时的特性

本附录列出了那些已经废弃(仍然可用,但是已计划删除)或者过时(已被删除,无法使用)的 JavaScript 特性。

废弃特性

这些废弃的特性仍然可以使用,但是使用时一定要保持谨慎,因为它们很可能会在未来的某个时间点被移除。应当将其从需要使用的代码中移除。

RegExp 对象的属性

下面的这些属性已经被废弃。注意,这和替换字符串中使用的同名标记没有直接关系。

属性 描述
$1-$9 捕获分组的匹配结果。
$_ input 属性的别名。
$* multiline 属性的别名。
$& lastMatch 属性的别名。
$+ lastParen 属性的别名。
$` leftContext 属性的别名。
$' rightContext 属性的别名。
input 正则表达式的匹配结果。
lastMatch 上次匹配结果的最后一个字符串。
lastParen 上次匹配中,最后一个捕获分组的匹配结果。
leftContext 上次匹配结果左边的字符串。
rightContext 上次匹配结果右边的字符串。

应该使用下面这些 RegExp 实例上的同名属性来代替上面这些 RegExp 对象的属性:

属性 描述
global 该正则是否开启了全局匹配模式。
ignoreCase 该正则是否开启了忽略大小写模式。
lastIndex 上次成功匹配的索引位置。
multiline 该正则是否开启了多行模式。
source 正则的源文本。

RegExp 对象的方法

compile() 方法已被废弃。

valueOf 方法已被废弃。使用 Object.valueOf() 代替它。

Function 对象的属性

callerarguments 属性已经废弃,因为它们会泄漏调用函数的对象。应当在函数内部使用 arguments 对象来代替函数的 arguments 属性。

遗留的生成器

迭代器

Object 对象的方法

  • watch 方法和 unwatch 方法已被废弃。使用 Proxy 并编写相应的捕获器代替它们。
  • __iterator__ 方法已被废弃。
  • Object.prototype.__noSuchMethod__ 方法已被废弃。使用 Proxy 并编写相应的捕获器作为代替。

Date 对象的方法

函数

Proxy

转义序列

字符串字面量(literal)和正则表达式字面量中的八进制转义序列(反斜杠 \ 后跟一到三位的八进制数字)已被废弃。

escape 函数和 unescape函数已被废弃。使用 encodeURIencodeURIComponentdecodeURIdecodeURIComponent 对特殊字符进行转义序列编码和解码。

String 对象的方法

过时特性

这些过时的特性已经完全被删除,不能在当前或者未来版本的 JavaScript 中使用了。

Object 对象

属性 描述 替换选择
__count__ 返回用户自定义对象上的可枚举自身属性的个数。 Object.keys()
__parent__ 指向一个对象的上下文。 没有直接的代替
__iterator__ 遗留的迭代器一起使用。 Symbol.iterator 以及新的迭代协议
__noSuchMethod__ 当调用不存在的属性作为方法时被调用的方法。 Proxy
Object.prototype.eval() 在指定对象的上下文种执行字符串表示的 JavaScript 代码。 没有直接的代替
Object.observe() 异步观察对象的变化。 Proxy
Object.unobserve() 移除观察者。 Proxy
Object.getNotifier() 创建一个通知对象,以分发 Object.observe() 观察到的变动的通知。 没有直接的代替
Object.prototype.watch() 将一个处理器回调附加到一个属性上,以在属性被赋值时自动调用函数。 Proxy
Object.prototype.unwatch() 移除属性上的监听处理器。 Proxy

函数

属性 描述
arity 形参的数量。

Array 对象

属性 描述
Array.observe() Asynchronously observing changes to Arrays.
Array.unobserve() Remove observers.

Number 对象

ParallelArray 对象

声明

E4X

详见 E4X

变量引用语法(Sharp variables)