ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript_javascript スキルにおけるオブジェクトの拡張可能なプロパティの概要

JavaScript_javascript スキルにおけるオブジェクトの拡張可能なプロパティの概要

WBOY
リリース: 2016-05-16 16:23:18
オリジナル
1202 人が閲覧しました

JavaScript では、オブジェクトの拡張可能属性を使用して、新しいプロパティをオブジェクトに動的に追加できるかどうかを示します。 ECMAScript 3 標準では、すべてのオブジェクトが拡張可能です。 ECMAScript 5 標準では、すべてのオブジェクトはデフォルトで引き続き拡張可能ですが、この属性は設定することで変更できます。

オブジェクトが拡張可能かどうかをクエリするには、Object.isExtensible() ステートメントを使用できます。


コードをコピー コードは次のとおりです:

var o = {x:1};
console.log(Object.isExtensible(o));//true


オブジェクトを拡張不可能にするには、Object.preventExtensions() ステートメントを使用できます。


コードをコピー コードは次のとおりです:
Object.preventExtensions(o)
console.log(Object.isExtensible(o));//false

Object.preventExtensions() には逆の操作ステートメントがないため、オブジェクトが拡張不可に設定されると、再度拡張可能に設定する方法がないことに注意してください。

Object.preventExtensions() ステートメントのスコープはオブジェクト自体であり、プロトタイプ オブジェクトは影響を受けません。オブジェクトが拡張不可に設定されている場合でも、プロパティはそのプロトタイプ オブジェクトに動的に追加でき、これらの動的に追加されたプロパティは引き続きオブジェクトによって継承されます。

Object.seal() および Object.freeze()

Object.preventExtensions() は、新しいプロパティがオブジェクトに動的に追加されるのを防ぐことができます。この操作に加えて、JavaScript にはオブジェクトを保護するための 2 つのより厳密な操作、Object.seal() と Object.freeze() があります。

Object.seal() の機能は、Object.preventExtensions() に基づいて、すべてのオブジェクト自身のプロパティの構成可能なプロパティを false に設定することです。 Object.preventExtensions() 操作と同様、Object.seal() には逆の操作がないため、オブジェクトがいったんシールされると、その状態を復元することはできません。 JavaScript では、Object.isSealed() を使用して、オブジェクトがシールされているかどうかをクエリできます。

Object.freeze() の機能は、Object.seal() に基づいてすべてのオブジェクト自体のプロパティを読み取り専用に設定することです。 Object.seal() および Object.preventExtensions() 操作と同様、Object.freeze() には逆の操作がないため、オブジェクトが一度フリーズされると、その状態を復元することはできません。 JavaScript では、Object.isFrozen() を使用して、オブジェクトが凍結されているかどうかをクエリできます。


コードをコピー コードは次のとおりです:
console.log(Object.isSealed(o));//false
Object.seal(o);
console.log(Object.isSealed(o));//true
console.log(Object.isFrozen(o));//false
Object.freeze(o);
console.log(Object.isFrozen(o));//true

Object.preventExtensions()、Object.seal()、Object.freeze() のいずれであっても、そのスコープはオブジェクト自体であり、オブジェクトのプロトタイプ オブジェクトは影響を受けません。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート