JavaScript 改ざん防止オブジェクトの使用例

JavaScript 改ざん防止オブジェクトの使用例

JavaScript 改ざん防止オブジェクト

これはめったに使われないし、個人的にはあまり役に立たないと思います。でも、見せびらかすためのツールとしては使えますよ、ハハ、始めましょう。 。

1. 拡張不可能なオブジェクト

デフォルトでは、オブジェクトは拡張可能であり、プロパティとメソッドをいつでも追加できます。 Object.preventExtensions(object) メソッドを使用してこの動作を変更し、オブジェクトにプロパティやメソッドを追加できなくなるようになりました。例えば:

var person={name : 'jack'};
オブジェクト.preventExtensions(人);
人.年齢=13;
console.log(person.age);///未定義

オブジェクトに新しいメンバーを追加することはできませんが、既存のメンバーはまったく影響を受けず、既存のメンバーを変更および削除することは可能です。さらに、isExtensible() メソッドを使用して、オブジェクトが拡張可能かどうかを判断することもできます。例えば:

var person={name : 'jack'};
アラート(Object.isExtensible(person)); //true

オブジェクト.preventExtensions(人);
alert(Object.istExtensible(person)); //false

2. 封印された物体

ECMAScript 5 でオブジェクトに対して定義されている 2 番目の保護レベルは、シールされたオブジェクトです。オブジェクトをシールされたオブジェクトに変更するには、Object.seal(object) メソッドを使用します。シールされたオブジェクトは拡張可能ではなく、既存のメンバーの [[configurable]] 属性は false に設定されます。つまり、Object.defineProperty() を使用してデータを変更し、そのプロパティにアクセスすることはできないため、プロパティとメソッドを削除することはできません。また、その逆も同様です。ただし、属性値は変更できます。

var person = {name:'tom'};
オブジェクト.seal(人);
人.年齢=12;
console.log(person.age);//未定義

person.name を削除します。
console.log(人.名前);//トム

person.name="ジャック";
alert(person.name);//ジャック

オブジェクトがシールされているかどうかを判断するには、Object.isSealed() メソッドを使用します。シールされたオブジェクトは拡張できないため、Object.istExtensible() を使用してシールされたオブジェクトを検出した場合も、false (つまり、拡張できない) が返されます。

var person = {name:'tom'};
alert(Object.isExtensible(person)); ///true、拡張可能 alert(Object.isSealed(person)); ////false、暗号化されていない Object.seal(person);
alert(Object.isExtensible(person)); ///false、拡張可能ではありません alert(Object.isSealed(person)); ////true、すでに暗号化されています

3. 凍った物体

最も厳格な改ざん防止レベルは、凍結オブジェクトです。凍結オブジェクトは拡張も封印もされず、オブジェクトのデータ プロパティの [[Writable]] 属性は false に設定されます。set 関数が定義されている場合、アクセサ プロパティは引き続き書き込み可能です。これで、Object.freeze(object) メソッドを使用して、オブジェクトを凍結オブジェクトに変更できます。

var person={name : 'tony'};
オブジェクトをフリーズします(人)。
人.年齢=12;
alert(person.age);//未定義

person.name を削除します。
alert(person.name);//tony

person.name = 'ジャック';
alert(person.name);//tony

オブジェクトが凍結オブジェクトであるかどうかを検出するには、Object.isFrozen() メソッドを使用します。凍結オブジェクトは非拡張オブジェクトとシールオブジェクトの両方であるため、isExtensible() を使用します。
Object.istExtensible() は、凍結されたオブジェクトを検出するとそれぞれ false と true を返します。

var person = {name:'tom'};
alert(Object.isExtensible(person));///true、拡張可能 alert(Object.isSealed(person));////false、暗号化されていません alert(Object.isFrozen(person));////false、暗号化されていません Object.seal(person);
alert(Object.isExtensible(person)); ///false、拡張可能ではありません alert(Object.isSealed(person)); ////true、すでに暗号化されています alert(Object.isFrozen(person)); ////true、すでに凍結されています

以上がJavaScript改ざん防止オブジェクトの使用例の詳しい内容です。JavaScript改ざん防止オブジェクトの詳細については、123WORDPRESS.COMの他の関連記事もご覧ください。

以下もご興味があるかもしれません:
  • JavaScript による改ざん防止オブジェクトの作成方法の分析
  • JavaScript 改ざん防止オブジェクトインスタンスの詳細な説明

<<:  Linux で Tomcat を実行するいくつかの方法の説明

>>:  Windows 10 で MySql の解凍バージョンをインストールして構成する方法のチュートリアル

推薦する

React Native が「NSArray<id<RCTBridgeModule>>型のパラメータを初期化できません」というエラーを報告する (解決方法)

最近、古い RN プロジェクトを Xcode で実行すると、次のコード エラーが報告されました。 &...

JavaScript PromiseとAsync/Awaitの詳細な説明

目次概要4つの例例1: 誕生日で説明する約束の基本例2: 数字当てゲーム例3: Web APIから国...

HTTP ステータス コード

このステータス コードは、リクエストのステータスに関する情報を提供し、サイトとリクエストされたページ...

Web データ ストレージ: Cookie、UserData、SessionStorage、WebSqlDatabase

クッキーこれはクライアント ブラウザの状態を保存するための標準的な方法です。Cookie はブラウザ...

CentOS6.7 mysql5.6.33 でデータファイルの場所を変更する方法

問題: MySQL がデータ ファイルを保存するパーティションの容量が小さく、現在いっぱいになってい...

1 行のコードでさまざまな IE 互換性の問題を解決します (IE6-IE10)

x-ua-compatible は、IE ブラウザがページを解析およびコンパイルするためのモデルを...

ユニークインデックスの S ロックと X ロックによる MySQL デッドロック ルーチンの理解

「初心者向けソースコードからの MySQL デッドロック問題の理解」では、MySQL ソースコードを...

Vue フロントエンドと Django バックエンドを使用して、一定期間内のデータをクエリする方法

序文開発プロセスでは、すべてのデータではなく特定の期間内のデータをクエリするなど、クエリのフィルタリ...

ブラウザの互換モードでボタン内のテキストが垂直方向に中央揃えにならない問題について簡単に説明します。

XML/HTML コードコンテンツをクリップボードにコピー<ボタンスタイル= "カ...

MySQL5.7 mysqldump バックアップとリカバリの実装

MySQL バックアップコールドバックアップ:停止服務進行備份,即停止數據庫的寫入ホットバックアップ...

JS を使用してファイルを操作する (FileReader は --node の fs を読み取ります)

目次JS はファイルを読み取る FileReader書類イベントとメソッド基本的な使い方イベント処理...

JavaScript 変数の昇格についての簡単な説明

目次序文1. どのような変数が促進されますか? 2. 可変プロモーションがあるのはなぜですか? (1...

docker-swarm をベースにした継続的インテグレーション クラスタ サービスの構築の詳細な説明

序文この記事は私自身の製作過程の簡単な記録です。練習中に質問があれば、一緒に話し合うことができます。...

関連するプロパティのリストを含む HTML エリア イメージ ホットスポットの使用の概要

<area> タグは主にイメージマップで使用されます。イメージマップにアクティブ領域 (...

ネイティブ JavaScript 継承方法とその長所と短所の詳細な説明

目次序文プロトタイプ継承アドバンテージ欠点コンストラクタの継承アドバンテージ欠点組み合わせ継承寄生的...