diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
commit | 33058f2b292b3a581333bdfb21b8f671898c5060 (patch) | |
tree | 51c3e392513ec574331b2d3f85c394445ea803c6 /files/zh-cn/web/javascript/reference/deprecated_and_obsolete_features | |
parent | 8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff) | |
download | translated-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')
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", "$&")}}</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 < 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> |