[JS]Propertyフラグ
5133 ワード
JavaScriptのオブジェクトの構成には、key-valueペアに加えて、他の構成オプションもあります.
オブジェクトプロパティのその他の構成オプションについて説明します.
広告マーク
オブジェクトプロセスには、3つのタグ(flag)と値(value)があります.
通常の方法で3つのタグを作成すると、それらはtrueに設定されます.書き込み可能:真平面値の変更を許可します. enumable:trueは、重複文を使用してリストされます. は、真平面プロファイルを削除または変更することができるように構成することができる. Propertyフラグに関するメソッド
Object.getOwnPropertyDescriptor
記述子には、プロセス値と3つのフラグに関する情報が含まれます.
Object.defineProperty
DefinePropertyメソッドは、ある場合はPropertyに変更されます.
ない場合は、新しいpropertyを作成します.
タグ情報が記述子にない場合、タグの値はfalseです.
タグがfalseに構成されている場合、次の制限があります.構成フラグ は変更できません.列挙フラグを変更できません. 書き込み可能:falseの値をtrueに変更できません(trueをfalseに変更できます). アクセス者PropertyGet/setは変更できません(再作成できます). これは、コンフィギュレーションフラグを変更できないため、コンフィギュレーションをfalseに設定すると.
アトリビュートの定義(Define Attributes)を再度使用する場合は、trueに変更することはできません.
これらのプロパティを使用すると、変更できないPropertyを作成できます.
一部の組み込みオブジェクトのプロファイルはconfiguration:falseに設定されています.
Math.PIは典型的な例である.このプロシージャは書き込み、リスト、構成できません.
複数のプロパティ向けの方法
Object.definedProperties
複数のプロパティを一度に定義できます.
オブジェクトのすべてのプロパティ記述子を取得できます.
Object.definedPropertiesとともに使用すると、タグをコピーできます.
オブジェクトプロパティのその他の構成オプションについて説明します.
広告マーク
オブジェクトプロセスには、3つのタグ(flag)と値(value)があります.
通常の方法で3つのタグを作成すると、それらはtrueに設定されます.
Object.getOwnPropertyDescriptor
let descriptor = Object.getOwnPropertyDescriptor(obj, propertyName);
/*
{
value
}
*/
オブジェクト名とプロパティ名をパラメータとして使用して記述子を取得できます.記述子には、プロセス値と3つのフラグに関する情報が含まれます.
Object.defineProperty
Object.defineProperty(obj, propertyName, descriptor);
オブジェクトと構成名、および適用される記述子をパラメータとして定義します.DefinePropertyメソッドは、ある場合はPropertyに変更されます.
ない場合は、新しいpropertyを作成します.
タグ情報が記述子にない場合、タグの値はfalseです.
let obj = {
age : 23,
}
Object.defineProperty(obj, 'name', {value:'yuno'});
// flag : false
//writable : false
obj.name = 'change' // err (use strict)
//enumable : false
for(let key in obj) {
console.log(key) // age
}
//configurable : false
delete obj.name; // err
設定可能フラグタグがfalseに構成されている場合、次の制限があります.
アトリビュートの定義(Define Attributes)を再度使用する場合は、trueに変更することはできません.
これらのプロパティを使用すると、変更できないPropertyを作成できます.
一部の組み込みオブジェクトのプロファイルはconfiguration:falseに設定されています.
Math.PIは典型的な例である.このプロシージャは書き込み、リスト、構成できません.
複数のプロパティ向けの方法
Object.definedProperties
複数のプロパティを一度に定義できます.
Object.definedProperties(obj, {
props1 : decriptor1,
props2 : decriptor2,
})
Object.getOwnPropertyDescriptorsオブジェクトのすべてのプロパティ記述子を取得できます.
Object.definedPropertiesとともに使用すると、タグをコピーできます.
let clone = Object.definedProperties(obj,Object.getOwnPropertyDescriptors(obj));
Reference
この問題について([JS]Propertyフラグ), 我々は、より多くの情報をここで見つけました https://velog.io/@hanganda23/JS-프로퍼티-플래그テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol