diff options
Diffstat (limited to 'files/ja/web/javascript/reference/errors/cant_delete/index.html')
-rw-r--r-- | files/ja/web/javascript/reference/errors/cant_delete/index.html | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/files/ja/web/javascript/reference/errors/cant_delete/index.html b/files/ja/web/javascript/reference/errors/cant_delete/index.html new file mode 100644 index 0000000000..2e2a44b27d --- /dev/null +++ b/files/ja/web/javascript/reference/errors/cant_delete/index.html @@ -0,0 +1,58 @@ +--- +title: 'TypeError: property "x" is non-configurable and can''t be deleted' +slug: Web/JavaScript/Reference/Errors/Cant_delete +tags: + - Errors + - JavaScript + - Strict Mode + - TypeError +translation_of: Web/JavaScript/Reference/Errors/Cant_delete +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="メッセージ">メッセージ</h2> + +<pre class="syntaxbox">TypeError: property "x" is non-configurable and can't be deleted. (Firefox) +TypeError: Cannot delete property 'x' of #<Object> (Chrome) +</pre> + +<h2 id="エラータイプ">エラータイプ</h2> + +<p>strict モードでのみ、{{jsxref("TypeError")}} の警告が出ます。</p> + +<h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2> + +<p>プロパティを削除しようとしましたが、プロパティが <a href="/ja/docs/Web/JavaScript/Data_structures#Properties">non-configurable</a> でした。<code>configurable</code> 属性は、オブジェクトからプロパティを削除できるかどうか、および(<code>writable</code> を除く)属性を変更できるかどうかを制御します。</p> + +<p>このエラーは、<a href="/en-US/docs/Web/JavaScript/Reference/Strict_mode">strict モードのコード</a> でのみ発生します。非 strict コードでは、この操作は <code>false</code> を返します。</p> + +<h2 id="例">例</h2> + +<p>non-configurable プロパティは、さほど一般的ではありませんが、{{jsxref("Object.defineProperty()")}} か {{jsxref("Object.freeze()")}} を使用して生成できます。</p> + +<pre class="brush: js example-bad">"use strict"; +var obj = Object.freeze({name: "Elsa", score: 157}); +delete obj.score; // TypeError + +"use strict"; +var obj = {}; +Object.defineProperty(obj, "foo", {value: 2, configurable: false}); +delete obj.foo; // TypeError + +"use strict"; +var frozenArray = Object.freeze([0, 1, 2]); +frozenArray.pop(); // TypeError +</pre> + +<p>JavaScript に組み込まれた、少数の non-configurable プロパティもあります。もしかしたら、Math の定数を削除しようとしたのかもしれません。</p> + +<pre class="brush: js example-bad">"use strict"; +delete Math.PI; // TypeError</pre> + +<h2 id="関連項目">関連項目</h2> + +<ul> + <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/delete">delete</a></li> + <li>{{jsxref("Object.defineProperty()")}}</li> + <li>{{jsxref("Object.freeze()")}}</li> +</ul> |