ray88’s diary

お仕事で困ったとき用の自分用の覚書

JavaScript Objectの凍結と封印 freezeメソッド・sealメソッド

JavaScript 目次 - ray88’s diary
JavaScript Objectオブジェクト - ray88’s diary
JavaScript Objectオブジェクト・サンプルコード - ray88’s diary
プリミティブ値であれば定数に格納することでその値を変更できないようにできるが、オブジェクトを定数に格納した場合、再代入はできないがそのプロパティの追加や値は変更できる。Objectオブジェクトのメンバーを用いることでこれらの制御が可能。
※プリミティブ値とは 数値、文字列、倫理値、null、undefined

freezeメソッド
オブジェクトを凍結するメソッド。引数に指定したオブジェクトのプロパティの全ての変更ができないようにする
【構文】

Object.freeze(オブジェクト)

sealメソッド
 オブジェクトを封印するメソッド。引数に指定したオブジェクトのプロパティの追加や削除を行えないようにする
 新たなプロパティの追加はできないがプロパティ値の変更は可能。
【構文】

Object.seal(オブジェクト)

サンプルコード

function myFunction(){
  const person = {name:'Bob',age:25};

  //sealメソッドでプロパティの追加や削除を制限(プロパティ変更は可)
  Object.seal(person);
  person.name = 'Tom';
  //sealで封印されているためプロパティ追加はされない
  person.favorite = 'banana';
  console.log(person);//{name:'Tom',age:25}

  //freezeメソッドで凍結するため、一切の変更は不可
  Object.freeze(person);
  person.name = 'Ivy';
  person.favorite = 'Orange';
  console.log(person);//{name:'Tome',age:25}
}