javascript オブジェクトのプロパティの追加と削除を不可にする
- 作成日 2021.02.01
- 更新日 2022.08.08
- javascript
- javascript

javascriptで、sealを使用して、オブジェクトのプロパティの追加と削除を不可にするサンプルコードを記述してます。
環境
- OS windows10 pro 64bit
- Apache 2.4.43
- ブラウザ chrome 103.0.5060.134
seal使い方
「seal」を使用すると、オブジェクトのプロパティの追加と削除を不可にすることが可能です。
以下のようにオブジェクトのプロパティを追加と削除するコードを
const site = {
name: 'mebee',
url: 'https://mebee.info/'
};
site.title = 'test';
console.log(
site
);
delete site.url;
console.log(
site
);
実行結果

「seal」を使用すると追加と削除ができなくなります。
const site = {
name: 'mebee',
url: 'https://mebee.info/'
};
Object.seal(site);
site.title = 'test';
console.log(
site
);
delete site.url;
console.log(
site
);
また、use strictを指定すると、seal後にプロパティを追加および削除しようとするとエラーとなります。
'use strict';
const site = {
name: 'mebee',
url: 'https://mebee.info/'
};
Object.seal(site);
site.title = 'test'; // エラーとなる
エラー内容
<chomer 103>
Uncaught TypeError: Cannot add property title, object is not extensible
<firefox 102>
Uncaught TypeError: can't define property "title": Object is not extensible
また、更新は可能となります。
'use strict';
const site = {
name: 'mebee',
url: 'https://mebee.info/'
};
Object.seal(site);
site.name = 'test';
console.log(
site
);
実行結果

確認
プロパティが追加・削除できるかを確認するには「isSealed」を使用します。
'use strict';
const site = {
name: 'mebee',
url: 'https://mebee.info/'
};
console.log(Object.isSealed(site)); // false
Object.seal(site);
console.log(Object.isSealed(site)); // true
配列に使用
配列に使用しても、同様のことを実行することが可能です。
const arr = ["aaa","bbb"]
arr[2] = "ccc"
console.log(arr)
console.log( Object.isSealed(arr) ); // false
Object.seal(arr); // 追加と削除を不可
arr[3] = "ddd"
console.log(arr)
console.log( Object.isSealed(arr) ); // true
「’use strict’」を使用すると、エラーが発生します。
'use strict';
const arr = ["aaa","bbb"]
arr[2] = "ccc"
console.log(arr)
console.log( Object.isSealed(arr) ); // false
Object.seal(arr); // 追加と削除を不可
arr[3] = "ddd"
// Uncaught TypeError: Cannot add property 3, object is not extensible
console.log(arr)
console.log( Object.isSealed(arr) ); // true
-
前の記事
rails6 ajaxを実装する 2021.01.31
-
次の記事
python フォルダを移動する 2021.02.01
コメントを書く