From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- .../deprecated_and_obsolete_features/index.html | 287 +++++++++++++++++++++ .../the_legacy_iterator_protocol/index.html | 79 ++++++ 2 files changed, 366 insertions(+) create mode 100644 files/zh-cn/web/javascript/reference/deprecated_and_obsolete_features/index.html create mode 100644 files/zh-cn/web/javascript/reference/deprecated_and_obsolete_features/the_legacy_iterator_protocol/index.html (limited to 'files/zh-cn/web/javascript/reference/deprecated_and_obsolete_features') diff --git a/files/zh-cn/web/javascript/reference/deprecated_and_obsolete_features/index.html b/files/zh-cn/web/javascript/reference/deprecated_and_obsolete_features/index.html new file mode 100644 index 0000000000..3700781397 --- /dev/null +++ b/files/zh-cn/web/javascript/reference/deprecated_and_obsolete_features/index.html @@ -0,0 +1,287 @@ +--- +title: 废弃和过时的特性 +slug: Web/JavaScript/Reference/Deprecated_and_obsolete_features +tags: + - JavaScript + - 废弃 + - 指南 + - 过时 +translation_of: Web/JavaScript/Reference/Deprecated_and_obsolete_features +--- +
{{JsSidebar("More")}}
+ +

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

+ +

废弃特性

+ +

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

+ +

RegExp 对象的属性

+ +

下面的这些属性已经被废弃。注意,这和{{jsxref("String.replace", "替换字符串")}}中使用的同名标记没有直接关系。

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
属性描述
{{jsxref("RegExp.n", "$1-$9")}} +

捕获分组的匹配结果。

+
{{jsxref("RegExp.input", "$_")}}input 属性的别名。
{{jsxref("RegExp.multiline", "$*")}}multiline 属性的别名。
{{jsxref("RegExp.lastMatch", "$&")}}lastMatch 属性的别名。
{{jsxref("RegExp.lastParen", "$+")}}lastParen 属性的别名。
{{jsxref("RegExp.leftContext", "$`")}}leftContext 属性的别名。
{{jsxref("RegExp.rightContext", "$'")}}rightContext 属性的别名。
{{jsxref("RegExp.input", "input")}}正则表达式的匹配结果。
{{jsxref("RegExp.lastMatch", "lastMatch")}}上次匹配结果的最后一个字符串。
{{jsxref("RegExp.lastParen", "lastParen")}}上次匹配中,最后一个捕获分组的匹配结果。
{{jsxref("RegExp.leftContext", "leftContext")}}上次匹配结果左边的字符串。
{{jsxref("RegExp.rightContext", "rightContext")}}上次匹配结果右边的字符串。
+ +

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

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

RegExp 对象的方法

+ +

{{jsxref("RegExp.compile", "compile()")}} 方法已被废弃。

+ +

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

+ +

Function 对象的属性

+ +

{{jsxref("Global_Objects/Function/caller", "caller")}} 和 {{jsxref("Global_Objects/Function/arguments", "arguments")}} 属性已经废弃,因为它们会泄漏调用函数的对象。应当在函数内部使用 arguments 对象来代替函数的 arguments 属性。

+ +

遗留的生成器

+ + + +

迭代器

+ + + +

Object 对象的方法

+ + + +

Date 对象的方法

+ + + +

函数

+ + + +

Proxy

+ + + +

转义序列

+ +

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

+ +

{{jsxref("Global_Objects/escape", "escape")}} 函数和 {{jsxref("Global_Objects/unescape", "unescape")}}函数已被废弃。使用 {{jsxref("Global_Objects/encodeURI", "encodeURI")}}、{{jsxref("Global_Objects/encodeURIComponent", "encodeURIComponent")}}、{{jsxref("Global_Objects/decodeURI", "decodeURI")}} 或 {{jsxref("Global_Objects/decodeURIComponent", "decodeURIComponent")}} 对特殊字符进行转义序列编码和解码。

+ +

String 对象的方法

+ + + +

过时特性

+ +

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

+ +

Object 对象

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
属性描述
{{jsxref("Global_Objects/Object/count", "__count__")}}返回用户自定义对象上的可枚举自身属性的个数。
{{jsxref("Global_Objects/Object/Parent", "__parent__")}}指向一个对象的上下文。
{{jsxref("Global_Objects/Object/eval", "Object.prototype.eval()")}}在指定对象的上下文上执行一个包含 JavaScript 代码的字符串。
{{jsxref("Object.observe()")}}Asynchronously observing the changes to an object.
{{jsxref("Object.unobserve()")}}Remove observers.
{{jsxref("Object.getNotifier()")}}Creates an object that allows to synthetically trigger a change.
+ +

函数

+ + + + + + + + + + + + +
属性描述
{{jsxref("Global_Objects/Function/arity", "arity")}}形参的数量。
+ +

Array 对象

+ + + + + + + + + + + + + + + + +
属性描述
{{jsxref("Array.observe()")}}Asynchronously observing changes to Arrays.
{{jsxref("Array.unobserve()")}}Remove observers.
+ +

Number 对象

+ + + +

ParallelArray 对象

+ + + +

声明

+ + + +

E4X

+ +

详见 E4X

+ +

变量引用语法(Sharp variables)

+ +

详见 JavaScript 中的变量引用语法

diff --git a/files/zh-cn/web/javascript/reference/deprecated_and_obsolete_features/the_legacy_iterator_protocol/index.html b/files/zh-cn/web/javascript/reference/deprecated_and_obsolete_features/the_legacy_iterator_protocol/index.html new file mode 100644 index 0000000000..75308950a2 --- /dev/null +++ b/files/zh-cn/web/javascript/reference/deprecated_and_obsolete_features/the_legacy_iterator_protocol/index.html @@ -0,0 +1,79 @@ +--- +title: 原始迭代协议 +slug: >- + Web/JavaScript/Reference/Deprecated_and_obsolete_features/The_legacy_Iterator_protocol +tags: + - ES2015 + - JavaScript + - Legacy Iterator + - 传统迭代协议 + - 废弃属性 + - 旧式迭代器 +translation_of: >- + Web/JavaScript/Reference/Deprecated_and_obsolete_features/The_legacy_Iterator_protocol +--- +
{{jsSidebar("More")}}
+ +
非标准。旧式迭代器协议是一个特定于 SpiderMonkey 的功能,在 Firefox 58+ 中删除。对于面向未来的用法,请考虑使用 for..of 循环与迭代协议
+ +

废弃的 Firefox 专用迭代器协议

+ +

Firefox,在版本 26 之前实现了另一个迭代器协议,类似于标准的 ES2015 迭代器协议

+ +

一个对象实现了 next() 方法,并在迭代结束时抛出 {{jsxref("Global_Objects/StopIteration", "StopIteration")}},它就是一个旧式迭代器。

+ + + + + + + + + + + + +
属性
next返回值的零个参数函数。
+ +

旧式迭代器与 ES2015 迭代器的区别

+ + + +

旧迭代器协议示例

+ +
function makeIterator(array){
+    var nextIndex = 0;
+
+    return {
+       next: function(){
+           if(nextIndex < array.length){
+               return array[nextIndex++];
+           else
+               throw new StopIteration();
+       }
+    }
+}
+
+var it = makeIterator(['yo', 'ya']);
+
+console.log(it.next()); // 'yo'
+console.log(it.next()); // 'ya'
+try{
+    console.log(it.next());
+}
+catch(e){
+    if(e instanceof StopIteration){
+         // iteration over
+    }
+}
+
+ +

参见

+ + -- cgit v1.2.3-54-g00ecf