--- title: 非推奨の機能、廃止された機能 slug: Web/JavaScript/Reference/Deprecated_and_obsolete_features tags: - Deprecated - Guide - JavaScript - Obsolete translation_of: Web/JavaScript/Reference/Deprecated_and_obsolete_features --- <p>{{JsSidebar("More")}}</p> <p>この付録リストは JavaScript で廃止予定 (まだ使用できるが削除する予定) とされた、あるいは既に廃止され使用不可となった機能の一覧です。</p> <h2 id="Deprecated_features" name="Deprecated_features">非推奨の機能</h2> <p>これらの非推奨機能はまだ使用可能かもしれません。しかし将来的には完全に削除されるでしょう。既にあなたがコード内でこれらを使用している場合は、代替となるコードに置き換えておく必要があります。</p> <h3 id="RegExp_properties" name="RegExp_properties"><code>RegExp</code> オブジェクトのプロパティ</h3> <p>以下のプロパティは非推奨です。これらは{{jsxref("String.replace", "文字列置換", "", 1)}}で使用しても効果がありません。</p> <table class="standard-table"> <tbody> <tr> <th>プロパティ</th> <th>説明</th> </tr> <tr> <td>{{jsxref("RegExp.n", "$1-$9")}}</td> <td>(もしあれば)括弧で囲まれた部分文字列にマッチします。 <p><strong>警告:</strong>このプロパティを使うことで、問題が起きる恐れがあります。なぜなら、ブラウザーの拡張がそれらを変更可能なためです。使用は避けるべきです。</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"><code>RegExp</code> オブジェクトのメソッド</h3> <ul> <li>{{jsxref("RegExp.compile", "compile()")}} メソッドは、非推奨です。</li> <li><code>valueOf</code> メソッドは、もはや <code>RegExp</code> のみのメソッドではありません。{{jsxref("Object.valueOf()")}} を使用してください。</li> </ul> <h3 id="Function_properties" name="Function_properties"><code>Function</code> オブジェクトのプロパティ</h3> <ul> <li>{{jsxref("Global_Objects/Function/caller", "caller")}} と {{jsxref("Global_Objects/Function/arguments", "arguments")}} プロパティは廃止されました。これは呼び出した関数を取得できてしまうためです。この arguments プロパティの代わりに、クロージャ内部の {{jsxref("Functions/arguments", "arguments")}} オブジェクトを使うべきです。</li> </ul> <h3 id="Legacy_generator" name="Legacy_generator">旧形式のジェネレーター</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 の配列内包", "#Differences_to_the_older_JS1.7.2FJS1.8_comprehensions")}}および {{jsxref("Operators/Generator_comprehensions", "JS1.7/JS1.8 のジェネレーター内包", "#Differences_to_the_older_JS1.7.2FJS1.8_comprehensions")}}は非推奨です。</li> </ul> <h3 id="Iterator" name="Iterator">イテレーター</h3> <ul> <li>{{jsxref("Global_Objects/StopIteration", "StopIteration")}} は非推奨です。</li> <li>{{jsxref("Global_Objects/Iterator", "Iterator")}} は非推奨です。</li> </ul> <h3 id="Object_methods" name="Object_methods">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_methods" name="Date_methods"><code>Date</code> オブジェクトのメソッド</h3> <ul> <li>{{jsxref("Global_Objects/Date/getYear", "getYear")}} と {{jsxref("Global_Objects/Date/setYear", "setYear")}} は「{{interwiki('wikipedia', '2000年問題')}}」の影響を受けます。代替策として、{{jsxref("Global_Objects/Date/getFullYear", "getFullYear")}} および {{jsxref("Global_Objects/Date/setFullYear", "setFullYear")}} の使用が推奨されます。</li> <li>新しいコードでは非推奨の {{jsxref("Global_Objects/Date/toGMTString", "toGMTString")}} メソッドは用いず、代わりに {{jsxref("Global_Objects/Date/toISOString", "toISOString")}} を用います。</li> <li>{{jsxref("Global_Objects/Date/toLocaleFormat", "toLocaleFormat")}} は非推奨です。</li> </ul> <h3 id="Functions" name="Functions">関数</h3> <ul> <li>{{jsxref("Operators/Expression_closures", "式クロージャ", "", 1)}}は非推奨です。代わりに通常の {{jsxref("Operators/function", "functions")}} または{{jsxref("Functions/Arrow_functions", "アロー関数", "", 1)}}を使用してください。</li> </ul> <h3 id="Proxy" name="Proxy">Proxy</h3> <ul> <li><a href="/ja/docs/Archive/Web/Old_Proxy_API">Proxy.create</a> および <a href="/ja/docs/Archive/Web/Old_Proxy_API">Proxy.createFunction</a> は非推奨です。代わりに {{jsxref("Proxy")}} を使用してください。</li> <li>以下のトラップは廃止しました: <ul> <li><code>hasOwn</code> ({{bug(980565)}}, Firefox 33).</li> <li><code>getEnumerablePropertyKeys</code> ({{bug(783829)}}, Firefox 37)</li> <li><code>getOwnPropertyNames</code> ({{bug(1007334)}}, Firefox 33)</li> <li><code>keys</code> ({{bug(1007334)}}, Firefox 33)</li> </ul> </li> </ul> <h3 id="Escape_sequences" name="Escape_sequences">エスケープシーケンス</h3> <ul> <li>文字列内と正規表現リテラル内での、8 進表記のエスケープシーケンス (\ に続く、1 つ、2 つ、もしくは、3 つの 8 進表現の数字) は非推奨です。</li> <li>{{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")}} を使用してください。</li> </ul> <h3 id="String_methods" name="String_methods">String オブジェクトのメソッド</h3> <ul> <li>{{jsxref("String.prototype.fontsize")}} や {{jsxref("String.prototype.big")}} などの <a href="/ja/docs/tag/HTML%20wrapper%20methods">HTML ラッパーメソッド</a>。</li> <li>{{jsxref("String.prototype.quote")}} は Firefox 37 で削除しました。</li> <li>{{jsxref("String.prototype.search")}}、{{jsxref("String.prototype.match")}}、{{jsxref("String.prototype.replace")}} の非標準パラメータ <code>flags</code> は非推奨です。</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="Obsolete_features" name="Obsolete_features">廃止された機能</h2> <p>これらは JavaScript において完全に廃止されており、現在では使用不可となっています。</p> <h3 id="Object" name="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>オブジェクトに対する変更を非同期に監視します。</td> </tr> <tr> <td>{{jsxref("Object.unobserve()")}}</td> <td>observer を削除します。</td> </tr> <tr> <td>{{jsxref("Object.getNotifier()")}}</td> <td>総合的に変更をトリガーできるオブジェクトを生成します。</td> </tr> </tbody> </table> <h3 id="Function" name="Function">Function</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" name="Array">Array</h3> <table class="standard-table"> <tbody> <tr> <td>プロパティ</td> <td>説明</td> </tr> <tr> <td>{{jsxref("Array.observe()")}}</td> <td>配列に対する変更を非同期に監視します。</td> </tr> <tr> <td>{{jsxref("Array.unobserve()")}}</td> <td>observer を削除します。</td> </tr> </tbody> </table> <h3 id="Number" name="Number">Number</h3> <ul> <li>{{jsxref("Number.toInteger()")}}</li> </ul> <h3 id="ParallelArray" name="ParallelArray">ParallelArray</h3> <ul> <li>{{jsxref("ParallelArray")}}</li> </ul> <h3 id="Statements" name="Statements">文</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" name="E4X">E4X</h3> <p>詳しくは <a href="/ja/docs/Archive/Web/E4X">E4X</a> をご覧ください。</p> <h3 id="Sharp_variables" name="Sharp_variables">シャープ変数</h3> <p>詳しくは <a href="/ja/docs/Archive/Web/Sharp_variables_in_JavaScript">Sharp variables in JavaScript</a> をご覧ください。</p>