제수기 - 제발 수업내용을 기억해라 / 단순 수업정리 시리즈
속성모음에 해당하는 자료형
- object, array, function 등 모두 객체형이다.
- 객체는 Literal방식과 생성자 방식으로 생성할 수 있다.
- 속성명은 문자열/식별자/심볼이 가능하다.
- 속성은 모든 타입을 허용하고, 특히 타입이 함수인 속성은 메소드라고 한다.
속성 참조는 두 가지 방식이 있다.
문자열, 식별자, 심볼 모두 속성명이 가능하지만, 헷갈리기 때문에, 식별자만 사용하는 것이 권장된다.
속성값 삭제
속성 삭제
- 메소드 안에서 현재 객체의 다른 속성을 참조할 때는 this를 사용한다.
- 메소드 선언 시에는 화살표함수를 지양한다. (this바인딩이 다르다.)
- 메소드 선언 시에는 익명함수, 메소드 단축표현식을 사용하자.
💥문제점 : 전역변수를 선언했을 때, 지금은 const라 그나마 다행이지만
만약 const plus = '+'; 이렇게 하면 오류가 난다. (let이면 +에 다른 값을 넣는 게 가능하다.)
근데 이런건 역시 가능하다.
전역이랑 지역변수는 다르니까. 이 안에 덥썩 선언해버리면 전역을 덮어버리게 된다. 이런 걸 방지하려면 직접 함수로 선언하는 게 아니라, 객체를 하나 만들고, 메소드를 선언한다.
0번지에 키값을, 1번지에 벨류값을 배치해보자. 코드는 배열구조분해할당으로 합쳐서 쓸 수 있다.
생긴 건 비슷하게 생겼다.
- 전개연산자 Spread Operator ...var(변수이름)
- 나머지파라미터 Rest Prameter ...var(변수이름)
하지만 쓰일 때가 다르다.
전개연산자는 값으로 뿌려서 전달할 때 사용한다.
나머지파라미터는 변수로써 모아서 전달받을 때 사용한다.
다시 기억해보자...
함수선언
const foo = (a, b) => a + b;
(a, b)
는 매개변수. 공간으로 쓰였다.
함수호출
foo(10, 20);
(10, 20)
는 매개인자. 값으로 생겼다.
=> 매개인자가 매개변수에 가서 쓰였다.
변수를 넣어서 다시 보자.
선언 : const foo = (a) => a * 2;
(a)
매개변수.호출 : const a = 10;
foo(a);
(a)
매개인자.매개인자 (a)는 a가 아니라, 10이라는 값이 담겨서 매개변수에 보내는 거다.
이걸 기억하면서, 전개연산자와 나머지파라미터를 비교해보자.
...arr1
전개연산자로 쓰였다.
const a = 10;
const b = a;
일 때 좌항의 a와 b는 변수. 우항의 10과 a는 값이다.
아래에서 ...arr1
은 어디에 쓰였나? 우항에 쓰였다. 무조건 전개연산자라고 볼 수 있다.
나머지 파라미터로 쓰인 ...c
는 좌항에 있다.
이제 응용해보자.
객체병합
{...obj, ...obj2}
전개연산자 사용
객체구조분해할당
...rest
나머지파라미터 사용
함수
이렇게 해줘도 된다.
in
은 객체 안에 속성이 있니 없니를 트루 펄스로 반환해주는 연산자다.
name 속성을 변수로 쓰고
이 안에 든 값을 속성 값으로 풀어준다.