[モダンJavaScript]第16章-職業評論


けいかく


JavaScriptエンジンでは、Propertyの作成時にPropertyのステータスを表すPropertyツリーを自動的にデフォルト値として定義します.propertyのステータスとは、propertyの値、値が更新可能かどうか、列可能かどうか、再定義可能かどうかです.Property Treviewは、JavaScriptエンジンによって管理される内部ステータス値です.内部スロット[Value]、[Writable]、[Enumerable]、および[Configurable].
✔ Object.getownPropertyDescriptorメソッド
Property Report情報を提供するProperty Disk Lipterオブジェクトを返します.存在しないプロセスまたは継承されたプロセスに対してpropertyディスクディスクディスクをディスク化する必要がある場合はundefinedが返されます.

データ・リソースとビジター・リソース

  • データプロパティ(データ属性)
    キーと値からなる一般的なプログラム.
  • アクセス者プロパティ(accessorプロパティ)
    それ自体は、別のデータ・プロシージャの値を読み出したり格納したりするときに呼び出されるアクセス者関数からなるプロシージャであり、値はありません.
  • データプロバイダレポート


    const person = {
      name: 'Cho'
    };
    
    console.log(Object.getOwnPropertyDescriptor(person,'name'));
    // {value: "Cho", writable: true, enumerable: true, configurable: true}

    アクセス者構成レポート



    構成定義


    property定義とは、新しいpropertyを追加するときに、propertyツリーを明確に定義するか、既存のpropertyを再定義するpropertyツリーです.Object.definePropertyメソッドを使用して、Propertyのツリー図を定義します.
    デフォルト[value]definedget[Get]definedget[Set]definedset[[Set]書き込み可能[Writable]falsenumerable[[Enummerable]ダミー構成[configurable]false
    ✔ Object.defineProperty:一度に1つのPropertyしか定義できません.
    ✔ Object.≪属性の定義|Define Attribute|ldap≫:一度に複数のプロパティを定義できます.

    オブジェクトの変更を防止


    分割メソッドを追加Property削除Property読み込みProperty値書き込みPropertyツリー再定義オブジェクト展開禁止オブジェクトオブジェクトオブジェクトを書き込みます.prevetExtensionsXOOOオブジェクトシールオブジェクト.sealXXXOOXオブジェクトオブジェクトオブジェクトをフリーズします.freezeXXOXX
  • オブジェクトの拡張を禁止
    Object.preventExtensionsメソッドは拡張オブジェクトを禁止します.拡張オブジェクトの禁止は、Propertyの追加を禁止することを意味します.
  • オブジェクトシール
    Object.sealメソッドはオブジェクトを密封します.オブジェクトシールは、Propertyの追加と削除を禁止し、Propertyツリーを再定義することを意味します.つまり、シールの対象は読み書きのみとなります.
  • オブジェクトのフリーズ

  • Object.freezeメソッドはオブジェクトをフリーズします.オブジェクトのフリーズは、Propertyの追加と削除、Propertyツリーの再定義、およびProperty値の更新を禁止することを意味します.つまり、フリーズされたオブジェクトは読み取り専用です.
  • 不変オブジェクト
    オブジェクトのネストされたオブジェクトをフリーズして可変読み取り専用オブジェクトを実現するには、オブジェクトをすべてのプロパティに値として返します.freezeメソッドを呼び出す必要があります.