Object 객체는 자바스크립트의 최상위 객체이다. 정확히는 Object 생성자 함수로 만든 인스턴트이다. Object 객체는 아래의 두 가지 방법으로 생성이 가능하다.
let object = {}; 또는 let object = new Object(); |
Object 객체에 있는 메서드는 총 7가지가 있다.
메서드 이름 | 설명 |
constructor() | 객체의 생성자 함수를 나타낸다. |
hasOwnProperty(name) | 해당 객체가 특정한 이름의 요소를 가지고 있는지 확인한다. |
isPrototypeof(object) | 해당 객체가 다른 객체의 프로토타입에 속했는지 확인한다. |
propertyIsEnumerable(name) | 특정 속성이 열거할 수 있는지 확인한다. |
toLocaleString() | 객체를 호스트 환경에 맞는 언어의 문자열로 바꾼다. |
toString() | 객체를 문자열로 바꾼다. |
valueOf() | 객체의 값을 나타낸다. |
toString() 메서드의 경우 기본적으로 toString() 메서드는 객체를 문자열로 변환할 때 자동으로 호출이 된다. 자바스크립트에 경우는 객체를 문자열로 변환할 때 자동으로 toString() 메서드가 호출한다.
Object 객체에 있는 메서드 중에 constructor() 메서드는 객체의 생성자 함수를 의미하고, 자료형을 검사할 때 유용하게 사용할 수 있다. 물론 자료형을 검사할 때 기존에 사용하던 typeof를 사용할 수도 있지만 이 경우에는 문제를 발생시킬 수 있다.
1
2
3
4
5
6
7
8
|
let numberFromLiteral=273;
let numberFromObject=new Number(273);
if(typeof(numberFromLiteral)=='number'){
alert('numberFromLiteral is Number');
}
if(typeof(numberFromObject)=='number'){
alert('numberFromObject is Number');
}
|
cs |
typeof를 이용해 두 자료형을 비교한다. 비교를 하게되면 numberFromLiteral은 숫자 자료형이기 때문에 alert('numberFromLiteral is Number') 실행이 되지만, numberFromObject는 숫자지만 생성자 함수로 만든 숫자는 객체이기 때문에 alert('numberFromObject is Number')가 실행이 되지 않는 사소한 문제점이 있다. 하지만 constructor() 메서드를 이용하면 보다 직관적으로 구분할 수 있다.
1
2
3
4
5
6
7
8
|
let numberFromLiteral=273;
let numberFromObject=new Number(273);
if(numberFromLiteral.constructor==Number){
alert('numberFromLiteral is Number');
}
if(numberFromObject.constructor==Number){
alert('numberFromObject is Number');
}
|
cs |
위의 코드를 실행하면 생성자 함수가 Number 생성자 함수인지 비교를 하게되면 쉽게 숫자인지 구분할 수 있고 다른 자료형도 마찬가지다.
Object 객체는 모든 자바스크립트 객체의 최상의 객체이다. 돌려말하면 Object 객체의 프로토타입에 속성 또는 메서드를 추가하면 모든 객체에서 활용 및 사용이 가능하다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
// Object 객체에 prototype으로 메서드를 추가한다.
Object.prototype.test=function(){
alert(this);
}
Object.prototype.sums=function(){
alert(this+10);
}
Object.prototype.times=function(){
alert(this*this);
}
// number=10의 변수를 선언한다.
let number=10;
// number 변수에 prototype 메서드를 각각 호출한다.
number.test();
number.sums();
number.times();
|
cs |
Object 객체는 자바스크립트의 최상위 객체이기 때문에 위와 같은 방법으로 prototype을 이용해 메서드를 여러개 추가를 한 뒤에 필요할 때 지정한 메서드의 이름을 불러와 사용할 수 있다.
'프로그래밍 공부 > JavaScript' 카테고리의 다른 글
JavaScript - String 객체 (0) | 2019.12.12 |
---|---|
JavaScript - Number 객체 (0) | 2019.12.11 |
JavaScript - 기본 자료형과 객체의 차이점 (0) | 2019.12.11 |
JavaScript - 생성자 함수 연습문제 (0) | 2019.12.10 |
JavaScript - 상속 (0) | 2019.12.10 |