해보자고

[인프런] 객체 본문

프로그래밍/자바스크립트

[인프런] 객체

초코맛동산 2024. 12. 6. 13:44

1. 객체란?

다양한 속성의 데이터를 하나의 변수에 저장할 수 있는 데이터 자료형으로 자료형 중 비원시 타입에 속한다. 

 

객체를 생성하는 방법은 2가지이다.

 

1. 객체 생성자 방식

  • new 키워드 사용.
let person = new Object();

console.log(person);

 

 

2. 객체 리터럴 방식

  • {} 키워드 사용.
let person = {};

console.log(person);

 

2. 객체 프로퍼티 

생성후 console.log로 객체를 확인해보면 아래와 같이 {} 만 출력된다. 

 

이는 객체 내부에 들어가는 아직 데이터를 추가하지 않아 발생하는데, 객체 내부에 들어가지는 이 데이터를 객체 프로퍼티라고 한다. 객체 프로퍼티는 key : value 의 쌍 형식의 구성이 기본인데, 중요한 특징은 아래와 같다. 

  • key 값으로 객체 값을 찾기에 key값은 고유해야 함.
  • value는 어떤 자료형이 와도 OK

 

2.1 객체 프로퍼티의 생성, 출력, 추가, 삭제, 수정

1) 객체 프로퍼티 생성

  • 객체 { key : value } 
let person = { // 객체 프로퍼티 값 생성
	name : "hyun",
	age : 22, 
	pet : "dog", 
};

 

 

2) 객체 프로퍼티 출력

1. 점 표기법

  • 객체 이름 + . +프로퍼티 key값 => value값 가져옴.
let person = { // 객체 프로퍼티 값 생성
	name : "hyun",
	age : 22, 
	pet : "dog", 
};

console.log(`${person.name}, ${person.age}, ${person.pet}`); // 객체 프로퍼티 값 출력



2. 괄호 표기법

  • 객체 이름 + ["key값"]  // 자바스크립트의 객체에서 프로퍼티 이름은 기본적으로 문자열로 저장되기에 변수인지, 문자열인지 명확하게 표시해줘야 함. 

-> key 값이 동적으로 사용, 혹은 key 값을 매개변수가 결정하는 경우 사용됨. 변수를 통한 프로퍼티 접근이 가능함.

 

let person = {
	name : "hyun",
	age : 22, 
	pet : "dog", 
};

console.log(`${person["name"]}, ${person["age"]}, ${person["pet"]}`);

 

let person = {
	name : "hyun",
	age : 22, 
	pet : "dog", 
};

const getValue = (key) => {
	console.log(person[key]);
}

getValue("name");

// 출력값: hyun

 

 

3) 객체 프로퍼티 추가 및 수정

  • 점 표기법, 괄호 표기법으로 추가 가능.
let person = {
	name : "hyun",
	age : 22, 
	pet : "dog", 
};

// 객체 프로퍼티 추가
person.phone = "010-2121-1212";
person.height = 170;

console.log(person);

 

 

let person = {
	name : "hyun",
	age : 22, 
	pet : "dog", 
};

// 객체 프로퍼티 수정
person.name = "June";
person["age"] = 21;

console.log(person);

 

 

4) 객체 프로퍼티 삭제

  • delete 키워드 사용.
let person = {
	name : "hyun",
	age : 22, 
	pet : "dog", 
};

delete person.age;
delete person["pet"];

console.log(person);

// 출력값:{ name: 'hyun' }

 

 

2.2 객체 프로퍼티의 value값이 함수인 경우

  • 화살표 함수사용X funtion 키워드로 선언해야함. -> 화살표 함수는 자신이 속한 객체를 가리킬 수 없어서. (this 같은 키워드)
  • 객체 프로퍼티 값이 함수로 생성 될 때 매서드라고 함.
    • this 키워드 통해 객체 프로퍼티 값을 꺼낼 수 있음.
let person = {
	name : "hyun",
	age : 22, 
	pet : "dog", 
	print : function() {
		console.log(`My name is ${this.name}. `);
	},
};

person.print();
person["print"]();

console.log(person);