もっと詳しく

JavaScriptは、Object.preventExtensions()、Object.seal()、Object.freeze()などのオブジェクトの変更を防ぐための複数のメソッドを提供します。 これらのすべてのメソッドは、オブジェクトの機能を意図的または偶発的に変更できないようにします。

この投稿では、JavaScriptでオブジェクトが変更されないようにするための以下のメソッドについて説明します。

それでは、始めましょう!

Object.preventExtensions()

以下にリストされているポイントは、preventExtensions()メソッドが正確に何であるかを説明します。

  • PreventExtensions()メソッドは、ユーザーが新しいメソッドまたはプロパティを追加することを制限します。
  • これにより、ユーザーは既存のメソッドとプロパティを削除できます
  • これにより、ユーザーは既存のメソッド/プロパティにアクセスできます。

Object.preventExtensions()メソッドの構文は次のとおりです。

1

物体PreventExtensions((obj)。;

以下のコードブロックを検討して、JavaScriptでpreventExtensions()メソッドがどのように機能するかを理解しましょう。

1
2
3
4
5
6
7
8
9
10

const empObj = {{

empName 「ディーン」

};

物体PreventExtensions((empObj)。;
empObj。empName = 「ディーン・ジョーンズ」;
empObj。empId = 12;

コンソール。ログ((“従業員名: “ empObj。empName)。;
コンソール。ログ((“従業員ID: “ empObj。empId)。;

このプログラムでは、

  • 最初に、「empObj」という名前のオブジェクトを作成しました。
  • 「empObj」オブジェクトには、「empName」という1つのプロパティがあります。
  • 次に、Object.preventExtensions()メソッドを使用して「empObj」をロックしました。
  • 次の行では、empNameプロパティを変更しました。つまり、新しい値「DeanJones」を割り当てました。
  • その後、新しいプロパティ名「empId」をempObjに追加しようとしました。
  • 最後に、console.log()メソッドを使用して両方のプロパティを出力しました。

出力は、既存のプロパティが正常に変更されたことを確認しましたが、制限付き/ロックされたオブジェクトに新しいプロパティを追加することはできません。

Object.seal()

Object.seal()メソッドの基本的な理解を得るために、以下のポイントを考慮してください。

  • Object.seal()メソッドは、ユーザーが新しいメソッドまたはプロパティを追加することを制限します。
  • ユーザーが既存のメソッドとプロパティを削除することを制限します
  • これにより、ユーザーは既存のメソッド/プロパティにアクセスできます。

Object.preventExtensions()メソッドの構文は次のとおりです。

以下に示すコードブロックは、JavaScriptでのObject.seal()の動作を説明しています。

1
2
3
4
5
6
7
8

const empObj = {{

empName 「ディーン」

};
消去 empObj。empName;

empObj。empId = 12;

コンソール。ログ((“従業員名: “ empObj。empName)。;
コンソール。ログ((“従業員ID: “ empObj。empId)。;

  • Object.seal()メソッドを使用して、「empObj」をロックしました。
  • 次の行では、empNameプロパティを削除しようとしました。
  • その後、新しいプロパティ名「empId」をempObjに追加しようとしました。
  • 最後に、console.log()メソッドを使用して両方のプロパティを出力しました。

出力は、JavaScriptでのseal()メソッドの動作を検証しました。

Object.freeze()

free()メソッドは、オブジェクトを完全にフリーズします。 以下のポイントは、freeze()メソッドについてより明確になります。

  • Object.freeze()メソッドは、ユーザーが新しいメソッド/プロパティを追加することを制限します。
  • ユーザーが既存のメソッドとプロパティを削除することを制限します
  • これにより、ユーザーは既存のメソッド/プロパティにアクセスできなくなります。

Object.preventExtensions()メソッドの構文は次のようになります。

Object.freeze()メソッドの基本を理解するために、以下のコードブロックを見てみましょう。

1
2
3
4
5
6
7
8
9
10
11

const empObj = {{

empName 「ディーン」

};

物体氷結((empObj)。;
消去 empObj。empName;
empObj。empName = 「ディーン・ジョーンズ」;
empObj。empId = 12;

コンソール。ログ((“従業員名: “ empObj。empName)。;
コンソール。ログ((“従業員ID: “ empObj。empId)。;

  • Object.freeze()メソッドを使用して「empObj」をロックしました。
  • 次に、empNameプロパティを削除しようとしました。
  • 次に、既存のプロパティ、つまりempNameを変更しようとしました。
  • その後、新しいプロパティ名「empId」をempObjに追加しようとしました。
  • 最後に、console.log()メソッドを使用して両方のプロパティを出力しました。

出力は、freeze()メソッドがempNameプロパティを削除しなかったことを確認しました。 変更された値ではなく、元のプロパティ値を返しました。 さらに、新しいプロパティ「empId」は追加されませんでした。

結論

JavaScriptには、オブジェクトの機能を意図的または偶発的に変更できないようにする組み込みメソッドがいくつか用意されています。 たとえば、Object.preventExtensions()、Object.seal()メソッドは、オブジェクトが部分的に変更されるのを防ぎます。 ただし、freeze()メソッドはオブジェクトを完全にフリーズします。 この記事では、JavaScriptでオブジェクトが変更されないようにするための3つの異なる方法について説明しました。

The post JavaScriptでオブジェクトの変更を防ぐ方法 appeared first on Gamingsym Japan.