[Deep Dive] 10. オブジェクト


1.対象とは?


  • JavaScriptはオブジェクト(object)に基づくプログラミング言語であり,その構成のほとんどがオブジェクトである.→元の値以外の値(関数、配列、正規表現など)はオブジェクトです.

  • オブジェクトは、0個以上のプロパティの集合であり、プロパティはキー(キー)と値(値)で構成されます.

  • property値が関数である場合、メソッド(method)と呼ばれ、通常の関数を区別します.

  • 属性:オブジェクトの状態を表す値(データ)

  • 方法:Property(ステータスデータ)を参照および操作する動作
  • 2.オブジェクトの作成

  • オブジェクトを作成する最も一般的で最も簡単な方法は、オブジェクト文字を使用することです.
  • 対象文字は括弧({...})で0個以上のプロパティを定義します.
  • ※文字?
    →人が理解できる文字や約定記号を用いて値を生成する記号法.
    let person = {
      name: "Kim",
      sayHello: function(){
        console.log(`Hello! My Name is ${this.name}.`);
      }
    }
    
    console.log(typeof person); // object
    console.log(person); // {name: "Kim", sayHello: f}
    
    // 중괄호 내에 프로퍼티를 정의하지 않으면 빈 객체가 생성된다.
    let empty = {}; // 빈 객체
    console.log(typeof empty); // object

    3.割引

  • オブジェクトは、キーと値からなるPropertyの集合です.
  • propertyはカンマ(,)で区切られます.
  • let person = {
      // 프로퍼티 키는 name, 프로퍼티 값은 "Kim"
      name: "Kim",
      // 프로퍼티 키는 age, 프로퍼티 값은 29
      age: 29
    };
    |𐥍7|propertyキー:すべての空の文字列またはシンボル値
    ①propertyキーはproperty値に近い名前として識別子として機能する.
  • Property値:JavaScriptで使用可能なすべての値
  • 4.方法

  • property値を関数とする場合、メソッド(method)と称して一般関数を区別する
  • メソッドは、オブジェクトに含まれる関数を表します.
  • let circle = {
      radius: 5, // 프로퍼티
      
      //원의 지름
      getDiameter: function(){ // 메서드
        return 2 * this.radius; // this는 circle을 가리킨다.
      }
    };
    
    console.log(circle.getDiameter()); // 10
    // 메서드 내부에 사용한 this키워드는 객체 자신(circle객체)을 가리키는 참조변수다.

    5.Propertyアクセス


    ①句点表記法

    let person = {
      name: "kim"
    }
    
    // 마침표 표기법에 의한 프로퍼티 접근
    console.log(person.name); // Kim

    ②かっこ表示法(かっこ表示法)

  • 角カッコを使用する場合、角カッコPropertyアクセス演算子で指定したPropertyキーは、引用符で囲まれた文字列でなければなりません.
  • let person = {
      name: "kim"
    }
    
    // 대괄호 표기법에 의한 프로퍼티 접근
    console.log(person["name"]); // Kim

    6.property値の更新

  • 既存のプロジェクト割当値に対してプロジェクト値が更新されます.
  • let person = {
      name: "Kim"
    };
    person.name = "Lee";
    
    console.log(person); // {name: "Lee"}

    7.動的作成プロパティ

  • 存在しないプロパティに値を指定すると、プロパティが動的に作成され、追加され、プロパティに値が指定されます.
  • let person = {
      name: "Kim"
    };
    // person 객체에는 age 프로퍼티가 존재하지 않는다.
    // person 객체에 age 프로퍼티가 동적으로 생성되고 값이 할당된다.
    person.age = 29;
    
    console.log(person); // {name: "Kim", age: 29}

    8.プロパティの削除

  • delete演算子は、オブジェクトのpropertyを削除します.
  • delete演算子の被演算子は、property値にアクセスできる式である必要があります
  • let person = {
      name: "Kim"
    };
    // 프로퍼티 동적 생성
    person.age = 29; 
    
    // person 객체에 age 프로퍼티가 존재한다.
    // delete 연산자로 age 프로퍼티를 삭제할 수 있다.
    delete person.age;
    
    // person 객체에 address 프로퍼티가 존재하지 않는다.
    // 존재하지 않는 프로퍼티를 삭제하면 아무런 에러 없이 무시된다.
    delete person.address;
    
    console.log(person); // {name: "Kim"}