
JavaScript에서 많이 쓰는 자료구조인 배열과 객체를 편하게 사용하기 위함이다. 즉, 객체나 배열에 저장된 데이터의 일부를 가져오고 싶을 때 주로 사용한다.
const arr=['tomato','kiwi','banana'];
const [tom, ki, ba]=arr5;
console.log(tom); //tomato
각각의 배열 요소를 '변수의 이름'이름 접근하기 위해서 사용한다. 변수를 선언한 순서대로 배열의 요소가 할당된다.
const [변수] = 배열 ;
//기존방식
const lists = ['apple', 'grape'];
console.log(lists[0], lists[1]); //apple grape
//구조분해 - 순서가 매우 중요
let [item1, item2] = lists;
console.log(item1); //apple
console.log(item2); //grape
let lists= ['apple', 'grape'];
[item1, item2, item3='peach']=lists;
console.log(item3); //peach
console
item1 = 'banana';
console.log(item1); //banana
let x = 1;
let y = 3;
[x, y] = [y, x];
console.log(x, y); //3 1
//객체
const obj = {
name: 'jihye',
age: 25,
gender: 'woman',
friend: ['승윤', '혜영', '밍하'],
hello: function () {
console.log('hello world');
},
// 문자열로 객체의 key 값 만들 수 있다.
'kdt-기수': '11기',
};
//기존
console.log(obj.name); //jihye
//value 변경
obj.age = 29;
console.log(obj.age); //29
obj.hello(); //hello world
console.log(obj.friend[2]); //밍하
//객체 배열에 key, value 추가
obj.city = '서울';
console.log(obj.city); //서울
//문자열 key 값 접근하기
console.log(obj['kdt-기수']); //11기
*문자열 key 값 부르기는 객체명[문자열]
const obj = {
name: 'jihye',
age: 29,
gender: 'woman',
friend: ['승윤', '혜영', '밍하'],
hello: function () {
console.log('hello world');
},
// 문자열로 객체의 key 값 만들 수 있다.
'kdt-기수': '11기',
};
//객체의 구조분해
const { name, city, age } = obj;
const { friend, hello, age: newAge } = obj;
console.log(name, city, age); //jihye 서울 29
console.log(friend, hello, newAge); //승윤 혜영 밍하 console.log('hello world') 29
// key 값 'age'를 'newAge'로 변경
const { friend, hello, age: newAge } = obj;
console.log(friend, hello, newAge); //승윤 혜영 밍하 console.log('hello world') 29
age라는 key 값을 newAge로 변경한 예시
기존 key 값 : 새로운 key 값
연산자 ...
[1,2,3,4,5]라는 배열의 요소를 전개하기 위해서 ...[1,2,3,4,5]로 접근*배열
<script>
const a = [1, 2, 3];
const b = [4, 5];
//spread 연산자로 배열 합치기
const spread = [...a, ...b];
console.log(spread); //[1,2,3,4,5]
</script>
<script>
//객체 접근해보기
const obj = {
name: '홍길동',
age: 18,
gender: 'man',
};
console.log({ ...obj });
console.log(obj);
</script>
(결과)

*배열
//rest
const values = [10, 20, 30, 40, 50, 60, 70];
function get(a, b, c, ...rest) {
console.log(a); //10
console.log(b); //20
console.log(c); //30
console.log(rest); //40 50 60 70
}
get(...values);
!!함수 안에 배열명을 넣을 때 spread연산자를 붙혀서 넣어야 한다!!

예제. 고양이 객체로 여러개의 고양이 class 선언
<script>
class Cat {
//생성자 - 클래스의 인스턴스 생성시 생성하는 것(선택사항)
constructor(name, age) {
//속성
this.name = name;
this.age = age;
}
//메소드- 함수라고 하지 않음.. 유의하기
mew() {
console.log(this.name, '야옹');
}
eat() {
console.log(
`${this.age}살 ${this.name}가 먹이를 먹습니다.`
);
}
}
let cat1 = new Cat('나비', 1);
let cat2 = new Cat('냥이', 2);
cat1.mew(); //나비 야옹
cat2.eat(); //2살 냥이가 먹이를 먹습니다.
console.log(cat1); // {"name": "나비","age": 1}
</script>
클래스 안에는 속성constructor와 함수method가 포함된다.
둘다 필수는 아닌 선택사항이다.
extends예시. Apart 클래스 안에서 House 클래스 안에 있는 함수method나 속성constructor를 사용하고 싶을 때 확장자 사용
<script>
//상속
class House {
door() {
console.log('문 있음.');
}
window() {
console.log('창문있음.');
}
}
const house1 = new House();
house1.door(); //문 있음.
//Apart에 House의 class 값들을 모두 사용할 수 있도록 클래스 상속
class Apart extends House {
elevator() {
console.log('엘베가 있음');
}
}
const apart = new Apart();
apart.door(); //문있음
</script>
<script>
class Shape {
constructor(width, height) {
this.width = width;
this.height = height;
}
getArea() {
return this.width * this.height;
}
}
let rec1 = new Shape(3, 4);
console.log(rec1.getArea()); //12
</script>
사각형의 넓이 구하는 Shape 클래스의 getArea() method!