開発コンソールで以下のコードを順番に実行して結果を確認してみてください
// オブジェクトを生成する var obj = {}; obj.foo = 'bar'; // オブジェクトを封印(seal)する obj = Object.seal(obj); console.log(obj); //-> { foo: 'bar' } // 封印されたオブジェクトで、既存プロパティの値の変更は可 obj.foo = 'updated'; console.log(obj); //-> { foo: 'updated' } // 封印されたオブジェクトで、既存プロパティの削除は不可 delete obj.foo; console.log(obj); //-> { foo: 'updated' } // 封印されたオブジェクトで、新規プロパティの追加は不可 obj.hoge = 'fuga'; console.log(obj); //-> { foo: 'updated' } // strict modeでは明示的にTypeErrorが発生 (function() { 'use strict'; obj.foo = 'bar'; //-> OK delete obj.foo; //-> TypeError obj.hoge = 'fuga'; //-> TypeError })();