script-DeepDive(4):オブジェクトをロックする
1599 ワード
拡張性プロパティ
オブジェクトの拡張性(拡張性)アトリビュートは、新しいPropertyを追加できるかどうかを決定します.
PreventExtensions
Object.オブジェクトの拡張を防ぐにはpreventExtensionsメソッドを使用します.後悔してはいけない.
const obj = {};
Object.preventExtensions(obj);
try {
Object.defineProperty(obj, "property1", { value : 42 });
} catch(e) {
console.log(e);
// error!!
}
Object.seal
Object.Sealは封止対象と考えられる.ここでいうシールは、Propertyの追加を阻止し、既存のProperty configurable=falseに変更することです.ただし、書き込み可能なプロパティの値は、シール後に変更できます.
const object1 = {
property1: 42
};
Object.seal(object1);
object1.property1 = 33;
console.log(object1.property1);
// expected output: 33
delete object1.property1; // cannot delete when sealed
console.log(object1.property1);
// expected output: 33
console.log(Object.getOwnPropertyDescriptor(object1,"property1"));
// expected output: Object { value: 33, writable: true, enumerable: true, configurable: false }
Freeze
Object.freezeメソッドはオブジェクトをフリーズします.つまり、対象を変更することはできません.新しい番組を増やしたり、削除を防止したり、価格の変更を防止したりします.つまり、一言で読めるということです.
const obj = {
prop: 42
};
Object.freeze(obj);
obj.prop = 33;
// Throws an error in strict mode
console.log(obj.prop);
// expected output: 42
console.log(Object.getOwnPropertyDescriptor(obj,"prop"));
// expected output: Object { value: 42, writable: false, enumerable: true, configurable: false }
整理する
片付けてください.
以上です.
Reference
この問題について(script-DeepDive(4):オブジェクトをロックする), 我々は、より多くの情報をここで見つけました https://velog.io/@lshn1007/Javascript-DeepDive4-객체-잠그기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol