[JS]Propertyフラグ


JavaScriptのオブジェクトの構成には、key-valueペアに加えて、他の構成オプションもあります.
オブジェクトプロパティのその他の構成オプションについて説明します.
広告マーク
オブジェクトプロセスには、3つのタグ(flag)と値(value)があります.
通常の方法で3つのタグを作成すると、それらはtrueに設定されます.
  • 書き込み可能:真平面値の変更を許可します.
  • enumable:trueは、重複文を使用してリストされます.
  • は、真平面プロファイルを削除または変更することができるように構成することができる.
  • Propertyフラグに関するメソッド
    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に構成されている場合、次の制限があります.
  • 構成フラグ
  • は変更できません.
  • 列挙フラグを変更できません.
  • 書き込み可能:falseの値をtrueに変更できません(trueをfalseに変更できます).
  • アクセス者PropertyGet/setは変更できません(再作成できます).
  • これは、コンフィギュレーションフラグを変更できないため、コンフィギュレーションを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));