3주차_김현중_회고록_part 2 - hyeone999/Docs-JS_deepDive_Study GitHub Wiki
✅ 학습한 내용
이번 주는 자바스크립트의 중요한 개념 중 하나인 **프로토타입(Prototype)**과 숫자 타입 및 객체를 다루는 Number 객체에 대해 학습했습니다.
📌 1. 프로토타입 (Prototype)
- 자바스크립트는 프로토타입 기반 언어로, 객체 간 상속을 프로토타입을 통해 구현함.
- 모든 객체는 숨겨진
prototype
링크를 가지고 있으며, 이는 다른 객체를 참조함__proto__
- 생성자 함수의
prototype
프로퍼티는 해당 생성자로 생성된 객체들의__proto__
와 연결됨. - 프로토타입 체인을 통해 상위 객체의 프로퍼티/메서드를 탐색함.
function Animal(name) {
this.name = name;
}
Animal.prototype.eat = function () {
console.log(`${this.name} is eating`);
};
const dog = new Animal('Rex');
dog.eat(); // Rex is eating
// dog는 eat 메서드를 직접 가지고 있지 않지만, 프로토타입 체인을 따라 Animal.prototype.eat을 찾아 실행함.
📌 2. Number 객체
- 자바스크립트는 하나의 **숫자 타입(number)**만 존재하며, 정수와 실수를 모두 포함함.
- Number는 숫자 값을 감싸는 래퍼 객체(wrapper object)
- 수학적으로 정의되지 않은 값은 NaN, 무한대는 Infinity로 표현함.
console.log(typeof 10); // 'number'
console.log(typeof new Number(10)); // 'object'
console.log(Number('abc')); // NaN
console.log(1 / 0); // Infinity
- 주요 메서드:
- toFixed(): 소수점 자리 고정
- toString(): 문자열로 변환
- parseInt(), parseFloat(): 문자열 → 숫자 변환
- isNaN(), isFinite(): 유효성 검사
📌 3. 부동소수점 비교 문제
0.1 + 0.2 !== 0.3
같은 문제는 부동소수점의 이진 표현 한계로 인해 발생함.- 자바스크립트는 이를 해결하기 위해
Number.EPSILON
을 활용할 수 있음.
function isEqual(a, b) {
return Math.abs(a - b) < Number.EPSILON;
}
isEqual(0.1 + 0.2, 0.3); // true
📝 4. 포인트
- 프로토타입은 자바스크립트의 상속 메커니즘 핵심
- 모든 객체는
__proto__
를 통해 프로토타입 체인을 형성함 Number
는 하나의 숫자 타입과 래퍼 객체 개념으로 동작- 부동소수점 비교에는
Number.EPSILON
활용하기