🍰 공부할 게 너무너무너무너무너무너무너무너무너무 많아서 블로그는 키워드 중심으로만 작성 중...
🍴 in 연산자
: 객체 내에 특정 프로퍼티 존재 여부 확인
- 확인 대상 객체가 상속받은 모든 프로토타입의 프로퍼티를 확인하므로 주의 필요
🍴 Object.prototype.hasOwnProperty 메서드
: 인수로 전달 받은 프로퍼티 키가 객체 고유의 프로퍼티 키인 경우에만 true 반환
console.log(person.hasOwnProperty('toString')); // false
🍴 Function.prototype.call()
: call() 메소드는 주어진 this 값 및 각각 전달된 인수와 함께 함수를 호출함
- 이미 할당되어있는 다른 객체의 함수/메소드를 호출한는 해당 객체에 재할당 할 때 사용
- 다른 메서드를 빌려 씀
Object.prototype.hasOwnProperty.call(person, 'firstName');
왜 빌려 쓰는가?
- JavaScript 객체는 내가 갖고 있지 않은 대상들을 조회할 수 있게 해줌
- 내가 원하는 값만 찾으려면 hasOwnProperty() 이용
- 그러나 hasOwnProperty()는 훼손될 수 있는 여지가 있음
- 내가 해당 메소드에 강제로 속성을 주면 그 속성이 출력됨 => 나중에 꼬일 수 있음
- Object는 막 접근해서 쓸 수 없고 허락 받아야 함
- 그런 경우 쓸 수 있는 게 call()
- call()의 첫 번째 인자: 걔를 빌리겠다!
- 두 번째 인자: 얘를 매개변수로 넣어라!
🍴 enumerable(열거 가능한)
: 색상에 차이가 있음. -> 내가 조회해서 열거 할 수 있는지 차이
🍴 점 표기법 vs 대괄호 표기법
- 점 표기법 => 변수 설정 x
- 대괄호 표기법 => 변수 설정 o
🍴 for...of
: 반복 가능한 대상만 쓸 수 있음 -> iterable 요소만 사용 가능
- for...in은 잘 사용 안 한다고 했는데, 그럼 객체는 뭘로 순환?
- => 객체를 배열로 만들고 for...of를 사용
🍴 Object.keys()
: 객체들의 키만 모아 하나의 배열로 반환
🍴 Object.values()
: 객체들의 값을 모아 하나의 배열로 반환
🍴 Object.entries()
: 객체의 키와 값을 하나의 쌍으로 만들고 이를 배열로 반환
🍴 함수
- 함수 이름 잘 짓기(동사, 가독성)
- 전역의 오염 막기
- 하나의 기능만 수행하기
- 재사용성이 좋아야 함