废弃和过时的特性 - JavaScript 编辑
本附录列出了那些已经废弃(仍然可用,但是已计划删除)或者过时(已被删除,无法使用)的 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 对象的属性
caller
和 arguments
属性已经废弃,因为它们会泄漏调用函数的对象。应当在函数内部使用 arguments
对象来代替函数的 arguments
属性。
遗留的生成器
遗留的生成器函数声明
和遗留的生成器函数表达式
已被废弃。使用function* 声明
和function* 表达式
代替它们。JS1.7/JS1.8 Array comprehension
和JS1.7/JS1.8 Generator comprehension
已被废弃。
迭代器
- 全局对象
StopIteration
已被废弃。 - 全局对象
Iterator
已被废弃。
Object 对象的方法
watch
方法和unwatch
方法已被废弃。使用Proxy
并编写相应的捕获器代替它们。__iterator__
方法已被废弃。__noSuchMethod__
方法已被废弃。使用Proxy
并编写相应的捕获器作为代替。
Date 对象的方法
getYear
方法和setYear
方法受千年虫问题(Year-2000-Problem)影响,已被getFullYear
方法和setFullYear
方法代替。- 应当使用
toISOString
方法代替已废弃的toGMTString
方法。 toLocaleFormat
已被废弃。
函数
Proxy
Proxy.create()
和Proxy.createFunction()
已被废弃。使用Proxy
即可。- 下列捕获器已经过时:
hasOwn
(bug 980565, Firefox 33).getEnumerablePropertyKeys
(bug 783829, Firefox 37)getOwnPropertyNames
(bug 1007334, Firefox 33)keys
(bug 1007334, Firefox 33)
转义序列
字符串字面量(literal)和正则表达式字面量中的八进制转义序列(反斜杠 \
后跟一到三位的八进制数字)已被废弃。
escape
函数和 unescape
函数已被废弃。使用 encodeURI
、encodeURIComponent
、decodeURI
或 decodeURIComponent
对特殊字符进行转义序列编码和解码。
String 对象的方法
- HTML 封装方法,比如
String.prototype.fontsize
和String.prototype.big
,已被废弃。 String.prototype.quote
已在 Firefox 37 中被移除。- non standard
flags
parameter inString.prototype.search
,String.prototype.match
, andString.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. …"
过时特性
这些过时的特性已经完全被删除,不能在当前或者未来版本的 JavaScript 中使用了。
Object 对象
属性 | 描述 |
---|---|
__count__ | 返回用户自定义对象上的可枚举自身属性的个数。 |
__parent__ | 指向一个对象的上下文。 |
Object.prototype.eval() | 在指定对象的上下文上执行一个包含 JavaScript 代码的字符串。 |
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. |
函数
属性 | 描述 |
---|---|
arity | 形参的数量。 |
Array 对象
属性 | 描述 |
Array.observe() | Asynchronously observing changes to Arrays. |
Array.unobserve() | Remove observers. |
Number 对象
ParallelArray 对象
声明
for each...in
声明已被废弃。使用for...of
作为代替。- 解构
for...in
声明已被废弃。使用for...of
作为代替。 - let 区块和 let 表达式已被废弃。
E4X
详见 E4X。
变量引用语法(Sharp variables)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论