JavaScript

[JavaScript] 기본 내장 객체

본 토픽은 현재 준비중입니다.공동공부에 참여하시면 완성 되었을 때 알려드립니다.

자바스크립트에는 굉장히 많은 기본 내장 객체가 있습니다. 따라서 이 모든 것을 모두 외우려고 하지말고 필요할 때 잘 찾아 쓰는 것이 중요합니다.

위 링크는 w3schols의 자바스크립트 레퍼런스입니다. 필요할 때마다 자주 방문해서 참고하세요.

기본 자료형과 객체의 차이

  • 자바스크립트의 6가지 자료형 : 숫자, 문자열, 불리언, 함수, 객체, 정의되지 않은 자료형
  • 기본 자료형 : 숫자, 문자열, 불리언
var primitiveNumber = 123;          // 기본 자료형
var objectNumber = new Number(123); // 객체

alert(typeof(primitiveNumber) + ' : ' + primitiveNumber);   // number : 123
alert(typeof(objectNumber) + ' : ' + objectNumber);         // object : 123

alert(primitiveNumber.constructor); // 메소드(속성) 호출
alert(objectNumber.constructor);    // 메소드(속성) 호출

기본 자료형과 객체는 typeof 에서 보듯이 분명히 다릅니다. 하지만 그 값도 서로 같고 속성과 메소드도 모두 같습니다. 하지만 사실 기본 자료형은 속성이나 메소드를 가질수 없습니다. 다만 속성이나 메소드를 호출할 때 기본 자료형과 연관된 객체로 일시적으로 변환되어 프로토타입을 서로 공유하는 것이지요. 즉 여기서 차이점이 발생합니다. 기본 자료형은 속성 또는 메소드를 추가할 수 없고 객체는 추가할 수 있습니다. 하지만 속성 또는 메소드를 프로토타입에 정의한다면 역시 기본 자료형과 객체 모두 공유하게 되므로 이 때에는 차이점이 없습니다. 아래 코드는 실행되지 않습니다.

var primitiveNumber = 123;

primitiveNumber.method = function() {
    alert('abc');
};

primitiveNumber.method(); // 출력되지 않음

기본 자료형에 프로토타입을 사용하지 않고 메소드를 추가했으므로 코드는 실행되지 않습니다. 아래 코드는 프로토타입을 이용한 예제입니다.

var primitiveNumber = 123;
var objectNumber = new Number(123);

Number.prototype.method = function() {
    alert('abc');
};

primitiveNumber.method();   // abc
objectNumber.method();      // abc

위와 같이 Number 객체의 프로토타입에 메소드를 추가하면 기본자료형, 객체 모두 메소드를 사용할 수 있습니다.

Object 객체

Object 객체는 자바스크립트의 가장 기본적인 내장 객체입니다. 모든 객체는 Object를 기반으로 만들어졌으므로(Object를 상속) Object의 메소드를 모두 갖고있습니다.

  • constructor() : 객체의 생성자 함수
  • hasOwnProperty(속성명) : 객체가 인자로 받은 속성을 가지고 있는지 확인합니다.
  • isPrototypeof(객체명) : 객체가 인자로 받은 객체의 프로토타입인지 확인합니다.
  • propertyIsEnumerable(속성명) : 인자로 받은 속성이 반복문을 통해 열거할 수 있는지 확인합니다.
  • toLocaleString() : 객체를 호스트 환경에 맞는 언어의 문자열로 바꿉니다.
  • toString() : 객체를 문자열로 바꿉니다.
  • valueOf() : 객체의 값을 나타냅니다.
constructor( ) 를 이용한 자료형 구분
var primitiveNumber = 123;          // 기본 자료형
var objectNumber = new Number(123); // 객체

alert(typeof(primitiveNumber) == 'number'); // true
alert(typeof(objectNumber) == 'number');    // false

alert(primitiveNumber.constructor == Number);   // true
alert(objectNumber.constructor == Number);      // true

typeof로 자료형을 비교할 수는 있지만 위의 코드에서 objectNumber가 숫자인지 객체인지 확인할 방법이 없습니다.(typeof(objectNumber)의 값은 object이기 때문에) 이 경우 constructor() 메소드를 이용하여 생성자 함수를 비교하면 그 객체가 어떤 데이터인지 알아낼 수 있습니다.

Number 객체

 

  • 봤어요 0명

댓글

댓글 본문
  1. 음....
    2013부터 지금까지 7년간 준비하셨으니 이제 올리셔도 될듯(?)