aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/web/javascript/reference/deprecated_and_obsolete_features
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
commit33058f2b292b3a581333bdfb21b8f671898c5060 (patch)
tree51c3e392513ec574331b2d3f85c394445ea803c6 /files/zh-cn/web/javascript/reference/deprecated_and_obsolete_features
parent8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff)
downloadtranslated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip
initial commit
Diffstat (limited to 'files/zh-cn/web/javascript/reference/deprecated_and_obsolete_features')
-rw-r--r--files/zh-cn/web/javascript/reference/deprecated_and_obsolete_features/index.html287
-rw-r--r--files/zh-cn/web/javascript/reference/deprecated_and_obsolete_features/the_legacy_iterator_protocol/index.html79
2 files changed, 366 insertions, 0 deletions
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
+---
+<div>{{JsSidebar("More")}}</div>
+
+<p>本附录列出了那些已经废弃(仍然可用,但是已计划删除)或者过时(已被删除,无法使用)的 JavaScript 特性。</p>
+
+<h2 id="废弃特性">废弃特性</h2>
+
+<p>这些废弃的特性仍然可以使用,但是使用时一定要保持谨慎,因为它们很可能会在未来的某个时间点被移除。应当将其从需要使用的代码中移除。</p>
+
+<h3 id="RegExp_Properties" name="RegExp_Properties">RegExp 对象的属性</h3>
+
+<p>下面的这些属性已经被废弃。注意,这和{{jsxref("String.replace", "替换字符串")}}中使用的同名标记没有直接关系。</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th>属性</th>
+ <th>描述</th>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.n", "$1-$9")}}</td>
+ <td>
+ <p>捕获分组的匹配结果。</p>
+ </td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.input", "$_")}}</td>
+ <td><code>input</code> 属性的别名。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.multiline", "$*")}}</td>
+ <td><code>multiline</code> 属性的别名。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.lastMatch", "$&amp;")}}</td>
+ <td><code>lastMatch</code> 属性的别名。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.lastParen", "$+")}}</td>
+ <td><code>lastParen</code> 属性的别名。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.leftContext", "$`")}}</td>
+ <td><code>leftContext</code> 属性的别名。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.rightContext", "$'")}}</td>
+ <td><code>rightContext</code> 属性的别名。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.input", "input")}}</td>
+ <td>正则表达式的匹配结果。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.lastMatch", "lastMatch")}}</td>
+ <td>上次匹配结果的最后一个字符串。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.lastParen", "lastParen")}}</td>
+ <td>上次匹配中,最后一个捕获分组的匹配结果。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.leftContext", "leftContext")}}</td>
+ <td>上次匹配结果左边的字符串。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.rightContext", "rightContext")}}</td>
+ <td>上次匹配结果右边的字符串。</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>应该使用下面这些 <code>RegExp</code> 实例上的同名属性来代替上面这些 <code>RegExp</code> 对象的属性:</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th>属性</th>
+ <th>描述</th>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.global", "global")}}</td>
+ <td>该正则是否开启了全局匹配模式。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.ignoreCase", "ignoreCase")}}</td>
+ <td>该正则是否开启了忽略大小写模式。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.lastIndex", "lastIndex")}}</td>
+ <td>上次成功匹配的索引位置。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.multiline", "multiline")}}</td>
+ <td>该正则是否开启了多行模式。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("RegExp.source", "source")}}</td>
+ <td>正则的源文本。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="RegExp_Methods" name="RegExp_Methods">RegExp 对象的方法</h3>
+
+<p>{{jsxref("RegExp.compile", "compile()")}} 方法已被废弃。</p>
+
+<p><code>valueOf</code> 方法已被废弃。使用 {{jsxref("Object.valueOf()")}} 代替它。</p>
+
+<h3 id="Function_对象的属性">Function 对象的属性</h3>
+
+<p>{{jsxref("Global_Objects/Function/caller", "caller")}} 和 {{jsxref("Global_Objects/Function/arguments", "arguments")}} 属性已经废弃,因为它们会泄漏调用函数的对象。应当在函数内部使用 <code>arguments</code> 对象来代替函数的 <code>arguments</code> 属性。</p>
+
+<h3 id="遗留的生成器">遗留的生成器</h3>
+
+<ul>
+ <li>{{jsxref("Statements/Legacy_generator_function", "遗留的生成器函数声明")}}和 {{jsxref("Operators/Legacy_generator_function", "遗留的生成器函数表达式")}}已被废弃。使用 {{jsxref("Statements/function*", "function* 声明")}}和 {{jsxref("Operators/function*", "function* 表达式")}}代替它们。</li>
+ <li>{{jsxref("Operators/Array_comprehensions", "JS1.7/JS1.8 Array comprehension", "#Differences_to_the_older_JS1.7.2FJS1.8_comprehensions")}} 和 {{jsxref("Operators/Generator_comprehensions", "JS1.7/JS1.8 Generator comprehension", "#Differences_to_the_older_JS1.7.2FJS1.8_comprehensions")}} 已被废弃。</li>
+</ul>
+
+<h3 id="迭代器">迭代器</h3>
+
+<ul>
+ <li>全局对象 {{jsxref("Global_Objects/StopIteration", "StopIteration")}} 已被废弃。</li>
+ <li>全局对象 {{jsxref("Global_Objects/Iterator", "Iterator")}} 已被废弃。</li>
+</ul>
+
+<h3 id="Object_对象的方法">Object 对象的方法</h3>
+
+<ul>
+ <li>{{jsxref("Object.watch", "watch")}} 方法和 {{jsxref("Object.unwatch", "unwatch")}} 方法已被废弃。使用 {{jsxref("Proxy")}} 并编写相应的捕获器代替它们。</li>
+ <li><code>__iterator__</code> 方法已被废弃。</li>
+ <li>{{jsxref("Object.noSuchMethod", "__noSuchMethod__")}} 方法已被废弃。使用 {{jsxref("Proxy")}} 并编写相应的捕获器作为代替。</li>
+</ul>
+
+<h3 id="Date_对象的方法">Date 对象的方法</h3>
+
+<ul>
+ <li>{{jsxref("Global_Objects/Date/getYear", "getYear")}} 方法和 {{jsxref("Global_Objects/Date/setYear", "setYear")}} 方法受千年虫问题(Year-2000-Problem)影响,已被 {{jsxref("Global_Objects/Date/getFullYear", "getFullYear")}} 方法和 {{jsxref("Global_Objects/Date/setFullYear", "setFullYear")}} 方法代替。</li>
+ <li>应当使用 {{jsxref("Global_Objects/Date/toISOString", "toISOString")}} 方法代替已废弃的 {{jsxref("Global_Objects/Date/toGMTString", "toGMTString")}} 方法。</li>
+ <li>{{jsxref("Global_Objects/Date/toLocaleFormat", "toLocaleFormat")}} 已被废弃。</li>
+</ul>
+
+<h3 id="函数">函数</h3>
+
+<ul>
+ <li>{{jsxref("Operators/Expression_closures", "表达式闭包")}}已被废弃。请用普通{{jsxref("Operators/function", "函数")}}或{{jsxref("Functions/Arrow_functions", "箭头函数")}}代替它。</li>
+</ul>
+
+<h3 id="Proxy">Proxy</h3>
+
+<ul>
+ <li><code><a href="/zh-CN/docs/Archive/Web/Old_Proxy_API">Proxy.create()</a></code> 和 <code><a href="/zh-CN/docs/Archive/Web/Old_Proxy_API">Proxy.createFunction()</a></code> 已被废弃。使用 {{jsxref("Proxy")}} 即可。</li>
+ <li>下列捕获器已经过时:
+ <ul>
+ <li><code>hasOwn</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=980565">bug 980565</a>, Firefox 33).</li>
+ <li><code>getEnumerablePropertyKeys</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=783829">bug 783829</a>, Firefox 37)</li>
+ <li><code>getOwnPropertyNames</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1007334">bug 1007334</a>, Firefox 33)</li>
+ <li><code>keys</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1007334">bug 1007334</a>, Firefox 33)</li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="Escape_Sequences" name="Escape_Sequences">转义序列</h3>
+
+<p>字符串字面量(literal)和正则表达式字面量中的八进制转义序列(反斜杠 <code>\</code> 后跟一到三位的八进制数字)已被废弃。</p>
+
+<p>{{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")}} 对特殊字符进行转义序列编码和解码。</p>
+
+<h3 id="String_对象的方法">String 对象的方法</h3>
+
+<ul>
+ <li><a href="/en-US/docs/tag/HTML%20wrapper%20methods">HTML 封装方法</a>,比如 {{jsxref("String.prototype.fontsize")}} 和 {{jsxref("String.prototype.big")}},已被废弃。</li>
+ <li>{{jsxref("String.prototype.quote")}} 已在 Firefox 37 中被移除。</li>
+ <li>non standard <code>flags</code> parameter in {{jsxref("String.prototype.search")}}, {{jsxref("String.prototype.match")}}, and {{jsxref("String.prototype.replace")}} are deprecated.</li>
+ <li>{{jsxref("String.prototype.substr")}} probably won't be removed anytime soon, but it's defined in <a href="https://www.ecma-international.org/ecma-262/9.0/index.html#sec-string.prototype.substr" rel="noopener">Annex B</a> of the ECMA-262 standard, whose <a href="https://www.ecma-international.org/ecma-262/9.0/index.html#sec-additional-ecmascript-features-for-web-browsers">introduction</a> states: "… Programmers should not use or assume the existence of these features and behaviours when writing new ECMAScript code. …"</li>
+</ul>
+
+<h2 id="过时特性">过时特性</h2>
+
+<p>这些过时的特性已经完全被删除,不能在当前或者未来版本的 JavaScript 中使用了。</p>
+
+<h3 id="Object_对象">Object 对象</h3>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th>属性</th>
+ <th>描述</th>
+ </tr>
+ <tr>
+ <td>{{jsxref("Global_Objects/Object/count", "__count__")}}</td>
+ <td>返回用户自定义对象上的可枚举自身属性的个数。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Global_Objects/Object/Parent", "__parent__")}}</td>
+ <td>指向一个对象的上下文。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Global_Objects/Object/eval", "Object.prototype.eval()")}}</td>
+ <td>在指定对象的上下文上执行一个包含 JavaScript 代码的字符串。</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Object.observe()")}}</td>
+ <td>Asynchronously observing the changes to an object.</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Object.unobserve()")}}</td>
+ <td>Remove observers.</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Object.getNotifier()")}}</td>
+ <td>Creates an object that allows to synthetically trigger a change.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="函数_2">函数</h3>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th>属性</th>
+ <th>描述</th>
+ </tr>
+ <tr>
+ <td>{{jsxref("Global_Objects/Function/arity", "arity")}}</td>
+ <td>形参的数量。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="Array_对象">Array 对象</h3>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td>属性</td>
+ <td>描述</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Array.observe()")}}</td>
+ <td>Asynchronously observing changes to Arrays.</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Array.unobserve()")}}</td>
+ <td>Remove observers.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="Number_对象">Number 对象</h3>
+
+<ul>
+ <li>{{jsxref("Number.toInteger()")}}</li>
+</ul>
+
+<h3 id="ParallelArray_对象">ParallelArray 对象</h3>
+
+<ul>
+ <li>{{jsxref("ParallelArray")}}</li>
+</ul>
+
+<h3 id="声明">声明</h3>
+
+<ul>
+ <li>{{jsxref("Statements/for_each...in", "for each...in")}} 声明已被废弃。使用 {{jsxref("Statements/for...of", "for...of")}} 作为代替。</li>
+ <li>解构 {{jsxref("Statements/for...in", "for...in")}} 声明已被废弃。使用 {{jsxref("Statements/for...of", "for...of")}} 作为代替。</li>
+ <li>let 区块和 let 表达式已被废弃。</li>
+</ul>
+
+<h3 id="E4X">E4X</h3>
+
+<p>详见 <a href="/en-US/docs/Archive/Web/E4X">E4X</a>。</p>
+
+<h3 id="变量引用语法(Sharp_variables)">变量引用语法(Sharp variables)</h3>
+
+<p>详见 <a href="/en-US/docs/Archive/Web/Sharp_variables_in_JavaScript">JavaScript 中的变量引用语法</a>。</p>
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
+---
+<div>{{jsSidebar("More")}}</div>
+
+<div class="warning">非标准。旧式迭代器协议是一个特定于 SpiderMonkey 的功能,在 Firefox 58+ 中删除。对于面向未来的用法,请考虑使用 <a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/for...of">for..of</a> 循环与<a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Iteration_protocols">迭代协议</a>。</div>
+
+<h2 id="废弃的_Firefox_专用迭代器协议">废弃的 Firefox 专用迭代器协议</h2>
+
+<p>Firefox,在版本 26 之前实现了另一个迭代器协议,类似于标准的 <a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Iteration_protocols">ES2015 迭代器协议</a>。</p>
+
+<p>一个对象实现了 next() 方法,并在迭代结束时抛出 {{jsxref("Global_Objects/StopIteration", "StopIteration")}},它就是一个旧式迭代器。</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">属性</th>
+ <th scope="col">值</th>
+ </tr>
+ <tr>
+ <td><code>next</code></td>
+ <td>返回值的零个参数函数。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="旧式迭代器与_ES2015_迭代器的区别">旧式迭代器与 ES2015 迭代器的区别</h3>
+
+<ul>
+ <li>在调用 <code>next</code> 的时候立即返回相应的值,不会返回一个占位符对象的值(<code>value</code>)属性。</li>
+ <li>通过抛出 {{jsxref("Global_Objects/StopIteration", "StopIteration")}} 对象表示迭代结束。</li>
+</ul>
+
+<h3 id="旧迭代器协议示例">旧迭代器协议示例</h3>
+
+<pre class="brush: js">function makeIterator(array){
+ var nextIndex = 0;
+
+ return {
+ next: function(){
+ if(nextIndex &lt; 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
+ }
+}
+</pre>
+
+<h2 id="参见">参见</h2>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Iterators_and_Generators">迭代器和生成器</a></li>
+ <li>更多<a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features">弃用和过时的功能</a></li>
+</ul>