Language/JavaScript

ModernJS / 07 - 객체 리터럴

2023. 3. 15. 22:54
목차
  1. 1. 객체란?
  2. 1-1. 객체의 구성
  3. 2. 객체 리터럴에 의한 객체 생성
  4. 2-1. 다양한 객체 생성 방법
  5. 2-2. 객체 리터럴의 특징
  6. 3. 프로퍼티
  7. 3-1. 키 key
  8. 4. 메서드
  9. 5. 프로퍼티 접근
  10. 5-1. 마침표 표기법
  11. 5-2. 대괄호 표기법
  12. 6. 프로퍼티의 추가 기능
  13. 6-1. 프로퍼티 값(value) 갱신
  14. 6-2. 프로퍼티 동적 생성
  15. 6-3. 프로퍼티 삭제
  16. 7. 객체 리터럴의 확장 기능
  17. 7-1. 프로퍼티 축약 표현
  18. 7-2. 계산된 프로퍼티 이름
  19. 7-3. 메서드 축약 표현

1. 객체란?

  • 객체 기반의 언어인 자바스크립트
    • 원시 값을 제외한 나머지 값은 모두 객체
  • 변경 가능한 값 mutable value
    • 원시 값은 변경이 불가능한 값 immutable value

 

1-1. 객체의 구성

0개 이상의

프로퍼티로 구성된 집합이며, 프로퍼티는 키(key) 와 값(value) 으로 구성

 

1-1-1. 프로퍼티

  • 객체의 상태를 나타내는 값
  • 자바스크립트에서 사용할 수 있는 모든 값은 프로퍼티 값이 될 수 있음
var obj_name = {
	ppname: 'property name' // 프로퍼티
  // 프로퍼티 키 : 프로퍼티 값
};

console.log(obj_name);

 

1-1-2. 메서드

  • 프로퍼티 값이 함수일 경우 일반 함수와 구분하기 위해 메서드라 부름
  • 프로퍼티를 참조하고 조작할 수 있는 동작
var obj_name = {
	mthdname: function() { // 메서드
		console.log("hello");
	}
};

console.log(obj_name);

 


2. 객체 리터럴에 의한 객체 생성

 

2-1. 다양한 객체 생성 방법

  • 객체 리터럴
  • Object 생성자 함수
  • 생성자 함수
  • Object.create 메서드
  • 클래스(ES6)

 

2-1-1. 객체 리터럴

리터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용하여 값을 생성하는 표기법

→ 객체 리터럴은 객체를 생성하기 위한 표기법

  • 가장 일반적이고 간단
  • 중괄호({}) 내에 0개 이상의 프로퍼티를 정의

 

2-2. 객체 리터럴의 특징

  • 객체 리터럴의 중괄호({}) 는 코드 블록을 의미하지 않음
    • 반드시 중괄호({}) 뒤에 세미콜론(;) 을 붙여줘야 함
  • 유연함과 강력함을 대표하는 객체 생성 방
  • 객체 리터럴 외의 객체 생성 방식은 모두 함수를 사용해 객체를 생성

 


3. 프로퍼티

객체는 프로퍼티의 집합이며, 프로퍼티는 키(key) 와 값(value) 으로 구성
  • 프로퍼티를 나열할 때는 쉼표(,) 로 구분
  • 프로퍼티의 키(key) : 빈 문자열을 포함하는 모든 문자열 또는 심벌 값
  • 프로퍼티의 값(value) : 프로퍼티의 값(value) 는 자바스크립트에서 사용할 수 있는 모든 값

 

3-1. 키 key

프로퍼티 값(value) 에 접근할 수 있는 이름으로서 식별자 역할

 

3-1-1. 네이밍 규칙

반드시 식별자 네이밍 규칙을 지켜야 하는 것은 아님

준수하는 경우

따옴표(’’, “”) 로 묶어야할 필요가 없음

 

준수하지 않는 경우 (ex symbol)

따옴표(’’, “”) 로 묶어줘야 함

var pptest = {
	ppName: 'with rule', // 준수하는 경우
	'pp-Name': 'without rule' // 준수하지 않는 경우
};

console.log(pptest);

 

3-1-2. 동적 생성

문자열 또는 문자열로 평가할 수 있는 표현식을 사용

→ 프로퍼티 키(key) 로 사용할 표현식을 대괄호([]) 로 묶어야 함

var pptest = {};
var new_key = 'new_key'; // 문자열

pptest[new_key] = 'dynamic creation'; // 대괄호로 묶음

console.log(pptest);

 

3-1-3. 특징

  • 문자열이나 심벌 값 외의 값을 사용하면 문자열로 암묵적 타입 변환
  • 예약어를 사용해도 에러는 발생하지 않음
  • 중복 선언하면 나중에 선언한 프로퍼티가 이전의 프로퍼티를 덮어씀

 


4. 메서드

자바스크립트에서 사용할 수 있는 모든 값은 프로퍼티 값(value) 으로 사용할 수 있음

→ 객체인 함수는 값으로 취급할 수 있기에 프로퍼티의 값(value) 으로 사용 가능

→ 일반 함수와 구분을 위해 메서드라 칭함

 


5. 프로퍼티 접근

  1. 마침표 프로퍼티 접근 연산자(.) 를 사용하는 마침표 표기법
  2. 대괄호 프로퍼티 접근 연산자([]) 를 사용하는 대괄호 표기법
var team = { 
	name: 'modern',
	members: 5
};

console.log(team.name); // 'modern'
console.log(team['members']); // 5

 

5-1. 마침표 표기법

프로퍼티의 키(key) 가 식별자 네이밍 규칙을 준수한 경우에만 사용이 가능

 

5-1-1. 표현 방식

  • 연산자의 좌측 : 객체로 평가되는 표현식
  • 연산자의 우측 : 프로퍼티의 키(key)

 

5-2. 대괄호 표기법

프로퍼티의 키(key) 가 식별자 네이밍 규칙을 준수하든 안하든 사용이 가능

 

5-2-1. 표현 방식

  • 연산자의 좌측 : 객체로 평가되는 표현식
  • 연산자의 내부 : 프로퍼티의 키
    • 반드시 따옴표로 감싼 문자열 이어야 함
    • 따옴표가 없다면 식별자로 인식 → 없는 식별자라면 undefined 를 반환하게 됨
    • 숫자로만 이뤄진 경우에는 따옴표가 없어도 됨

 


6. 프로퍼티의 추가 기능

 

6-1. 프로퍼티 값(value) 갱신

이미 존재하는 프로퍼티에 값(value) 을 할당하면 갱신됨

var team = { name: 'modern' };

team.name = 'modernJS'; // 값 갱신

console.log(team);

 

6-2. 프로퍼티 동적 생성

존재하지 않는 프로퍼티에 값을 할당하면 프로퍼티가 동적으로 생성되어 추가됨

var team = { name: 'modern' };

team.members = 5; // members: 5 프로퍼티를 동적으로 생성

console.log(team);

 

6-3. 프로퍼티 삭제

delete 연산자를 이용해 프로퍼티를 삭제

→ 존재하지 않는 프로퍼티라면 에러 없이 그냥 무시됨

var team = { 
	name: 'modern',
	members: 5
};

delete team.members; // members 프로퍼티 삭제
delete team.topic; // 존재하지 않는 프로퍼티 -> 그냥 무시

console.log(team);

 


7. 객체 리터럴의 확장 기능

ES6 에서는 더욱 간편하고 표현력 있는 객체 리터럴의 확장 기능을 제공

 

7-1. 프로퍼티 축약 표현

  • 프로퍼티의 값은 변수에 할당된 식별자 표현식일 수도 있음
  • 변수 이름과 프로퍼티 키가 동일한 이름일 때 프로퍼티 키를 생략할 수 있음 → 자동생성
var name = 'modern';
var members = 5;

var team = {
	name: name, // 프로퍼티의 값은 변수에 할당된 식별자 표현식
	members // 변수 이름 = 프로퍼티 키 -> 생략 가능
};

console.log(team);

 

7-2. 계산된 프로퍼티 이름

  • 문자열, 문자열로 타입 변환할 수 있는 값으로 평가되는 표현식을 사용해 프로퍼티 키를 동적으로 생성 가능
  • 프로퍼티 키로 사용할 표현식을 대괄호로 묶어야 함
  • 객체 리터럴 내부에서도 계산된 프로퍼티 이름으로 프로퍼티 키를 동적 생성 가능
var name_1 = 'na';
var name_2 = 'me';
var members_1 = 'mem';
var members_2 = 'bers';

var team = {
	[name_1+name_2]: 'modern' // 내부에서 계산된 프로퍼티 이름으로 동적 생성
};
team[members_1+members_2] = 5; // 외부에서 계산된 프로퍼티 이름으로 동적 생성

console.log(team);

 

7-3. 메서드 축약 표현

메서드를 정의할 때 function 키워드를 생략 가능

var team = {
	name: 'modern',
	
	member_cnt() {
		console.log('total = 5');
	}
};

team.member_cnt();

 


 

저작자표시 비영리 변경금지 (새창열림)
  1. 1. 객체란?
  2. 1-1. 객체의 구성
  3. 2. 객체 리터럴에 의한 객체 생성
  4. 2-1. 다양한 객체 생성 방법
  5. 2-2. 객체 리터럴의 특징
  6. 3. 프로퍼티
  7. 3-1. 키 key
  8. 4. 메서드
  9. 5. 프로퍼티 접근
  10. 5-1. 마침표 표기법
  11. 5-2. 대괄호 표기법
  12. 6. 프로퍼티의 추가 기능
  13. 6-1. 프로퍼티 값(value) 갱신
  14. 6-2. 프로퍼티 동적 생성
  15. 6-3. 프로퍼티 삭제
  16. 7. 객체 리터럴의 확장 기능
  17. 7-1. 프로퍼티 축약 표현
  18. 7-2. 계산된 프로퍼티 이름
  19. 7-3. 메서드 축약 표현
'Language/JavaScript' 카테고리의 다른 글
  • ModernJS / 09 - 함수(1)
  • ModernJS / 08 - 원시 값과 객체의 비교
  • ModernJS / 06 - 타입 변환
  • ModernJS / 05 - 제어문
YaHoDev
YaHoDev
YaHo 개발과 일상 일기
YaHoDev
YaHo's Dev Diary
YaHoDev
전체
오늘
어제
  • YaHo (50)
    • Network (6)
      • SDN (2)
      • SD-RAN (4)
    • Language (10)
      • JavaScript (10)
    • BlockChain (6)
    • 알고리즘 문제 (24)
      • 프로그래머스 (24)
    • 야호 먹지도 (4)

블로그 메뉴

  • 모던JS 깃허브

인기 글

최근 글

태그

  • ONF
  • js
  • javascript
  • 비트코인
  • 모던 자바스크립트 Deep Dive
  • LV2
  • 프로그래머스
  • Ran
  • 자바스크립트
  • SD-RAN
hELLO · Designed By 정상우.
YaHoDev
ModernJS / 07 - 객체 리터럴
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.