메타 스터디/JavaScript

객체 리터럴(object literal)

B.Rabtle 2022. 5. 13.

객체(object)

  • 0개 이상의 프로퍼티의 집합
  • 자바스크립트에서 원시 값(immutable value)을 제외한 모든 값은 객체 값(mutable value)이다

property와 method 구분

{property,
property,
method // 메서드도 프로퍼티이지만 객체 내의 요소를 구분할 때는 간단히 property와 method로 구분 지어서 말한다
}

클래스 기반과 프로토타입 기반 객체지향 언어

  • C, 자바 (클래스 기반 객체지향 언어) ←→ JavaScript(프로토타입 기반 객체지향 언어)
  • ? 프로토타입 기반 객체지향 언어란 객체의 property key에 할당된 공간의 값을 갱신이 가능한 것을 말하는 것 같다. 

객체 리터럴(object literal)과 코드 블록(code blocks)

  • 둘 다 {} 똑같이 생겼지만 다른 의미다.
  • 객체는 값이기에 ;를 붙이지만 코드 블록은 자체 종결성이 있기 때문에 붙이지 않는다고 한다.

프로퍼티(property)

  • 프로퍼티 키(property key) - 문자열과 심벌 값만 사용 가능
  • 프로퍼티 값(property value) - 모든 값 사용 가능

메서드(method)

  • 메서드는 일급 객체(first-class object)다.
  • ? 객체의 우선순위를 말하는 듯한데 어떤 역할을 정확히 할까?
  • this 키워드
    • 객체 내에서 자기 자신의 메서드를 부르는 키워드... 신기하다
const person = {
  firstName: "rabtle",
  fullName : function() {
    return this.firstName; // this는 자기 자신인즉 person 객체를 뜻한다.
  }
};

프로퍼티 접근법

  • 마침표 표기법(dot notation) or 대괄호(bracket notation)
object.propertyKey or object['property key’]
  • 존재하지 않는 프로퍼티 접근시 에러일까 아닐까?
    • 에러가 아닌 undefined 반환

프로퍼티 동적 생성(dynamically creating object property)

  • 객체 리터럴을 사용해서 만든 이후에도 언제든지 해당 객체의 새로운 프로퍼티를 생성할 수 있는 걸 말함.
  • ? 다른 언어는 동적 생성이 안 되는 걸까? 안된다면 why?

프로퍼티 삭제

  • delete 연산자를 사용해서 삭제하면 된다.
delete object.property

프로퍼티 축약 표현(property value shorthand)

  • 객체 내부에 해당 값이 있는 변수를 넣으면 변수의 이름과 값과 같은 형식의 새로운 프로퍼티를 만든다.

계산된 프로퍼티 이름(computed property name)

  • 대괄호 표기법을 사용해 계산된 프로퍼티 이름을 넣어 동적으로 프로퍼티 키를 생성할 수 있음

메서드도 축약 표현이 가능하다고?

  • 객체 내에서만 사용하는 축약 표현의 형식
functionName() {} //객체 내에서 property key: property value 형식 대신 이렇게 축약 표현 가능

댓글