JavaScript | TypeScript/Javascript 시작하기
[ Javascript ] 자료형 구분, 모든 객체에 메서드 추가
shiro21
2022. 6. 16. 15:33
반응형
자료형 구분
Object객체에 있는 constructor()메서드는 객체의 생성자 함수를 의미하며, 자료형을 검사 할 때 유용하게 사용할 수 있습니다.
typeof 연산자의 문제점 예
var number = 273;
var numberObject = new Number(273);
var output = '';
output += '1. ' + typeof(number) + '\n';
output += '2. ' + typeof(numberObject);
console.log(output);
/*
1. number
2. object
*/
두 변수 모두 숫자지만 생성자 함수로 만든 숫자는 객체이므로 위와 같은 결과가 나옵니다.
이러한 특성 때문에 자료형 검사에 문제가 발생합니다.
typeof 연산자를 사용한 자료형 비교 예
var number = 273;
var numberObject = new Number(273);
if(typeof (number) == 'number') {
console.log('number는 숫자입니다.') // number는 숫자입니다.
}
if(typeof (numberObject) == 'number') {
console.log('numberObject는 숫자입니다.');
}
두 변수 모두 숫자지만 생성자 함수로 만든 숫자는 객체이기 때문에 경고창을 출력하지 않습니다.
이러한 두 대상을 같은 자료형으로 취급하고 싶을 때는 constructor()메서드를 사용해야 합니다.
생성자 함수를 사용한 자료형 비교 예
var number = 273;
var numberObject = new Number(273);
if(number.constructor == Number) {
console.log('number는 숫자입니다.') // number는 숫자입니다.
}
if(numberObject.constructor == Number) {
console.log('numberObject는 숫자입니다.'); // numberObject는 숫자입니다.
}
객체의 생성자 함수가 Number생성자 함수인지 비교하면 쉽게 숫자인지 구분할 수 있습니다.
모든 객체에 메서드 추가
Object객체는 모든 자바스크립트 객체의 최상위 객체입니다. 따라서 Object객체의 프로토타입에 속성 또는 메서드를 추가하면 모든 객체에서 활용할 수 있습니다.
Object 객체의 prototype 속성에 메서드 추가하기 예
Object.prototype.test = function() {
console.log(this);
};
var number = 273;
number.test(); // 273
실행하면 273을 출력합니다.
반응형