けいかく


Propertyプロパティについて学びましょう
まず、専門的なコメントを理解する前に、内部スロットと内部方法を学びましょう.
内部スロット&内部メソッド
内部スロットおよび内部メソッドは、ECMAScript仕様で定義されているように実装され、実際にはJavaScriptエンジンで動作しますが、開発者が直接アクセスできる外部公開オブジェクトのプロファイルではありません.これは、内部スロットと内部メソッドに直接アクセスすることはできませんが、間接アクセスメソッドを提供することができます.
たとえば、すべてのオブジェクトに[Prototype]という内部スロットがあり、直接アクセスすることはできませんが、protoで間接的にアクセスできます.
const o = {};

o.__proto__ // Object.prototype
私はこれから勉強する専門のタイプで話すつもりです.
PropertyツリーとPropertyディスク立棒オブジェクト
JavaScriptビットエンジンは、Propertyが作成されたときのPropertyの状態を示すPropertyツリーを自動的にデフォルト値として定義し、Propertyの状態を表します.
構成ステータスとは、構成の値(value)、更新(書き込み可能)、列挙(enumerable)、再定義可能(configurable)です.
const person = {
  name: 'Jung'
};


console.log(Object.getOwnPropertyDescriptor(person, 'name'));
// {value: "Jung", writable: true, enumerable: true, configurable: true}
Object.getownPropertyDescriptor personのnameのPropertyツリーのすべての情報を表示したくない場合は、
Object.getownPropertyDescriptorを使用します.
データプロバイダ
JavaScriptエンジンが構成を作成すると、データ構成は自動的にデフォルト値として定義されます.
訪問者の割合
アクセス者構成とは、他のデータ構成の値を読み出したり保存したりするときに、アクセス者関数からなる構成であり、それ自体に値はありません.
アクセス者プロパティには値がありません.データプロパティとともに使用する必要があります.
すなわち、アクセス者関数からなる構成であり、他のデータPropertyの値を読み出したり格納したりするために使用されます.
アクセス者関数にはgetterとsetterがあり、ストレージ値を呼び出すことができます.
const person = {
	firstName: 'Jeong',
  	lastName: 'jihoon',
  
  get fullName() {
    return `${this.firstName} ${this.lastName}`
  },
  set fullName(name) {
  	[this.firstName,this.lastName] = name.split(' ')'
  }
};

console.log(person.firstName + ' ' + person.lastName) // Jeong jihoon

person.fullName = 'hi jung'
console.log(person); // {firstName: "hi", lastName: "jung"}

console.log(person.fullName); // hi jung

// firstName은 데이터 프로퍼티다.
// 데이터 프로퍼티는 [[Value]], [[Writable]], [[Enumerable]], [[Configurable]] 프로퍼티 어트리뷰트를 갖는다.
let descriptor = Object.getOwnPropertyDescriptor(person, 'firstName');
console.log(descriptor);

descriptor = Object.getOwnPropertyDescriptor(person, 'fullName');
console.log(descriptor);
// {get: ƒ, set: ƒ, enumerable: true, configurable: true}
これらの値を保存して呼び出すことができます.getterとsetterを使用する理由は、データの内部精度を確保するために、もう一度加工することを考慮してください.
たとえば、ageを保存する場合、0歳未満の場合は、条件を設定して値を保存し、保存後にgetterを呼び出すことができます.
通常の方法で表すことができますが、訪問者プロパティはユーザーにとって便利なので使用します.
構成定義
Propertyを追加するときに、Propertyツリーを明確に定義するか、既存のPropertyのPropertyツリーを再定義します.たとえば、更新可能な構成値、リスト可能な構成値、または再定義可能な構成値を定義できます.
Object.DefinePropertyメソッドを使用して、Propertyのツリー図を定義します.
const person = {};

// 데이터 프로퍼티 정의
Object.defineProperty(person, 'firstName', {
  value: 'Jeong',
  writable: true,
  enumerable: true,
  configurable: true
});

Object.defineProperty(person, 'lastName', {
  value: 'jihoon'
});
Object.definePropertiesこのメソッドでは、複数のPropertiesを一度に定義できます.
出版:https://poiemaweb.com/fastcampus/property-definition