객체(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’]
- 존재하지 않는 프로퍼티 접근시 에러일까 아닐까?
프로퍼티 동적 생성(dynamically creating object property)
- 객체 리터럴을 사용해서 만든 이후에도 언제든지 해당 객체의 새로운 프로퍼티를 생성할 수 있는 걸 말함.
- ? 다른 언어는 동적 생성이 안 되는 걸까? 안된다면 why?
프로퍼티 삭제
- delete 연산자를 사용해서 삭제하면 된다.
delete object.property
프로퍼티 축약 표현(property value shorthand)
- 객체 내부에 해당 값이 있는 변수를 넣으면 변수의 이름과 값과 같은 형식의 새로운 프로퍼티를 만든다.
계산된 프로퍼티 이름(computed property name)
- 대괄호 표기법을 사용해 계산된 프로퍼티 이름을 넣어 동적으로 프로퍼티 키를 생성할 수 있음
메서드도 축약 표현이 가능하다고?
functionName() {} //객체 내에서 property key: property value 형식 대신 이렇게 축약 표현 가능
댓글