2차_3주차_이서연_회고록 - hyeone999/Docs-JS_deepDive_Study GitHub Wiki
19장 프로토타입
1. 객체지향 프로그래밍
- 객체: 상태(state)와 동작(behavior)을 하나로 묶은 독립적 실체
- 속성: 객체의 상태 (프로퍼티)
- 메서드: 객체의 동작 (함수)
2. 상속
- 객체는 다른 객체의 프로퍼티와 메서드를 상속받을 수 있음
- 코드 재사용을 가능하게 함
3. 프로토타입의 개념
- 자바스크립트는 프로토타입 기반 객체지향 언어
- 모든 객체는 숨겨진 Prototype(또는
__proto__
)을 가짐 - 이 프로토타입은 또 다른 객체를 참조함 → 프로토타입 체인
4. 생성자 함수와 프로토타입
- 생성자 함수는 객체를 생성
- 이 함수에는 자동으로
prototype
프로퍼티가 생성됨 - 생성된 인스턴스의 내부
[Prototype](/hyeone999/Docs-JS_deepDive_Study/wiki/Prototype)
은 생성자 함수의prototype
을 참조
__proto__
와 prototype
5. __proto__
: 인스턴스가 참조하는 부모 객체 (즉, 프로토타입)prototype
: 생성자 함수가 생성할 인스턴스가 참조할 객체
prototype
을 가짐
6. 함수 객체만 - 일반 객체는
prototype
프로퍼티를 갖지 않음 - 함수 정의 시
prototype
자동 생성
7. 프로토타입 체인
- 프로퍼티나 메서드를 찾을 때 자신의 객체 → 프로토타입 객체 → 상위 프로토타입으로 순차 탐색
8. 오버라이딩과 섀도잉
- 오버라이딩: 부모의 메서드를 자식이 재정의
- 섀도잉: 동일한 이름의 프로퍼티가 자식 객체에 있으면 부모의 것을 가림
9. 프로토타입 변경
- 생성자 함수의
prototype
을 다른 객체로 변경 가능 - 이 경우,
constructor
가 초기화되지 않으므로 수동으로 설정 필요
constructor
프로퍼티
10. - 생성자 함수와 연결
- 프로토타입 변경 시 올바르게 연결해주어야 함
instanceof
연산자
11. - 객체가 어떤 생성자의 인스턴스인지 확인
- 프로토타입 체인을 따라 검사
Object.create()
12. - 새로운 객체를 만들 때 특정 객체를 프로토타입으로 설정
- 생성자 없이도 상속 구현 가능
13. 정적 프로퍼티/메서드 vs 프로토타입 메서드
- 정적(static): 생성자 함수에 직접 정의, 인스턴스에서는 접근 불가
- 프로토타입 메서드: 모든 인스턴스에서 공유됨
14. 프로퍼티 존재 확인
in
연산자: 상속 포함 모든 프로퍼티 확인hasOwnProperty()
: 객체 자신의 프로퍼티만 확인
15. 프로퍼티 열거
for...in
: 상속 포함 열거Object.keys()
: 자신의 열거 가능한 키만 반환Object.getOwnPropertyNames()
: 비열거 프로퍼티 포함
28장 Number
1. Number 생성자 함수
Number()
함수 또는new Number()
생성자 사용 가능Number()
는 숫자 값을 반환new Number()
는 **Number 객체(래퍼 객체)**를 반환하며, typeof 결과는"object"
- 숫자 연산에는
Number()
함수 사용 권장
Number(10); // 10
typeof Number(10); // "number"
new Number(10); // Number { 10 }
typeof new Number(10); // "object"
2. Number 프로퍼티
1) Number.EPSILON
부동소수점 연산에서 발생하는 작은 오차를 표현
0.1 + 0.2 === 0.3
이 false인 문제를 해결할 때 사용
2) Number.MAX_VALUE
표현 가능한 가장 큰 수
3) Number.MIN_VALUE
표현 가능한 가장 작은 양수
4) Number.MAX_SAFE_INTEGER
안전하게 표현 가능한 가장 큰 정수
값: 2^53 - 1
(9007199254740991)
5) Number.MIN_SAFE_INTEGER
안전하게 표현 가능한 가장 작은 정수
값: -(2^53 - 1)
(-9007199254740991)
6) Number.POSITIVE_INFINITY
양의 무한대 (Infinity)
7) Number.NEGATIVE_INFINITY
음의 무한대 (-Infinity)
8) Number.NaN
숫자가 아님 (Not-a-Number)
3. Number 메서드
1) Number.isFinite : 인수로 전달된 숫자값이 정상적인 유한수인지 판단하여 불리언 값으로 반환
2) Number.isInteger : 인수로 전달된 숫자값이 정수인지 판단하여 불리언 값으로 반환
3) Number.isNaN : 인수로 전달된 숫자값이 NaN인지 판단하여 불리언 값으로 반환
4) Number.is.SafeInteger : 인수로 전달된 숫자값이 안전한 정수인지 판단하여 불리언 값으로 반환
5) Number. prototype.toExponential : 숫자를 지수 표기법으로 문자열 반환
6) Number. prototype.toFixed : 숫자를 반올림하여 문자열로 반환
7) Number. prototype. toPrecision : 인수를 전달받은 전체 자릿수 기준으로 유효 숫자를 반환 → 정밀도 지정 가능]
8) Number. prototype. toString : 숫자를 문자열로 반환, 진수도 지정 가능 (2~36진법)
회고
저번 주 스터디와 마찬가지로 프로토타입 부분 또한 한번에 이해하긴 좀 무리가 있었다. 그래도 다같이 스터디를 하면서 복습하고 모르는 것에 대해 한번 더 집고 넘어가니 이제는 좀 알 것 같다. 저번에 배웠던 실행컨텍스트, 클로저에 이어서 프로토타입부분도 더 알아보면 좋을 거 같다.