ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 객체
    Note 2020. 10. 27. 20:37

    객체(object)

    - 의미를 가지는 정렬되지 않은 집합

    - 이름(name), 값(value)으로 구성된 프로퍼티(property)

    - 프로퍼티의 값으로 함수가 올 수도 있는데, 이러한 프로퍼티를 메소드(method)라고 한다.

     

    객체의 예

    강아지

    프로퍼티(propoerty)

    dog.name = "댕댕이"
    dog.age = 5
    dog.weight = 6
    ....

    강아지 객체는 모두 위와 같은 프로퍼티를 가지지만, 각 프로퍼티의 값은 전부 다를 것이다.

     

    let dog = {
      name: "댕댕이",
      age: 5,
      weight: 6,
    };

    - 객체는 키, 값으로 이루어짐

    - 키, 값 사이는 콜론(:)으로 구분

    - 중괄호를 이용해 객체 생성

    - 키-값은 쉼표(comma)로 구분

     

    객체의 메소드 참조

    객체이름.메소드이름()

    var person = {
        name: "홍길동",
        birthday: "030219",
        pId: "1234567",
        fullId: function() {
          return this.birthday + this.pId;
        }
    };
    
    // person.fullId() // 0302191234567
    // person.fullId;  // function () { return this.birthday + this.pId; } 

    메소드를 참조할 때 메소드 이름 뒤에 괄호()를 붙이지 않으면, 메소드가 아닌 프로퍼티 그 자체를 참조하게 된다. 따라서 괄호를 사용하지 않고 프로퍼티 그 자체를 참조하게 되면 해당 메소드의 정의 그 자체가 반환된다.

     

    객체의 생성

    Dot notation

    dog.name; // '댕댕이'
    dog.age; // 5
    
    추가;
    dog.type = "Basset Hound";
    
    dog = { name: "댕댕이", age: 5, weight: 6, type: "Basset Hound" };
    
    삭제;
    delete dog.type;
    
    dog = { name: "댕댕이", age: 5, weight: 6 };

    Bracket notation

    dog["name"]; // '댕댕이'
    dog["age"]; // 5
    
    추가;
    dog["type"] = "Basset Hound";
    
    dog = { name: "댕댕이", age: 5, weight: 6, type: "Basset Hound" };
    
    삭제;
    delete dog["type"];
    
    dog = { name: "댕댕이", age: 5, weight: 6 };

     

    생성자 함수(constructor function)

    var day = new Date(); // new 연산자를 사용하여 Date 타입의 객체를 생성함
    document.write("올해는 " + day.getFullYear() + "년입니다.");

     

    Object.create() 메소드

    var obj = Object.create(null, {             // null 프로토타입을 사용하여 새로운 객체를 만들고
        x: { value: 100, enumerable: true },    // x좌표를 나타내는 열거할 수 있는 프로퍼티와
        y: { value: 200, enumerable: true }     // y좌표를 나타내는 열거할 수 있는 프로퍼티를 추가함
    });
    
    obj      // {x: 100, y:200}
    obj.x;   // x좌표 
    obj.y;   // y좌표 
    
    Object.getPrototypeOf(obj); // 객체의 프로토타입을 반환해 줌

     

    객체 프로퍼티의 순회

    - for/in문
    - Object.keys() : 해당 객체가 가진 고유 프로퍼티 중에 열거할 수 있는 프로퍼티의 이름을 배열에 담아 반환
    - Object.getOwnPropertyNames(): 해당 객체가 가진 모든 고유 프로퍼티의 이름을 배열에 담아 반환

     

    객체 간의 비교

    별개의 두 객체는 프로퍼티의 값이 모두 같아도, 같다고 말할 수 없다.- 두 객체는 별개의 객체이므로, 동등(==), 일치(==) 연산자로 비교해도 모두 false

    'Note' 카테고리의 다른 글

    Scope, Closure  (0) 2020.10.27
    CLI  (0) 2020.10.27
    배열  (0) 2020.10.27
    반복문  (0) 2020.10.27
    조건문, 문자열  (0) 2020.10.27

    댓글