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을 출력합니다.

 

반응형