JavaScript Cannot delete property xxxxの解決方法

環境
Google Chrome  114.0.5735.199(Official Build) (64 ビット)
Windows 11 Pro 64bit

修正前コード

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
let obj = {name: 'yamada', age: 15};
Object.freeze(obj);
delete obj.age;
let obj = {name: 'yamada', age: 15}; Object.freeze(obj); delete obj.age;
let obj = {name: 'yamada', age: 15};

Object.freeze(obj);

delete obj.age;

エラーメッセージ
Error: Cannot delete property 'age’ of #<Object>

原因
Object.freeze() メソッドはオブジェクトを凍結します。
凍結されたオブジェクトは変更できなくなります。

修正後コード

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
let obj = {name: 'yamada', age: 15};
console.log(Object.keys(obj).length);
delete obj.age;
Object.freeze(obj);
console.log(Object.keys(obj).length);
let obj = {name: 'yamada', age: 15}; console.log(Object.keys(obj).length); delete obj.age; Object.freeze(obj); console.log(Object.keys(obj).length);
let obj = {name: 'yamada', age: 15};

console.log(Object.keys(obj).length);

delete obj.age;

Object.freeze(obj);

console.log(Object.keys(obj).length);

実行結果
2
1

JavaScript

Posted by arkgame