본문 바로가기

책/인사이드 자바스크립트

6day - 데이터 타입과 연산자(5)

1-1)Array( ) 생성자 함수

배열 리터럴도 결국 자바스크립트에서 기본 제공 Array () 생성자 함수로 배열을 생성하는 과정을 단순화시킨 것이다.

간단하게 Array() 생성자 함수를 알아보자.(개발자들은 배열 리터럴대신 Array() 함수를 사용한다.)

1
2
3
4
5
6
7
var foo = new Array(3);
console.log(foo);   // undefined x 3
console.log(foo.length)  // 3
 
var bar = new Array12);
console.log(bar);   // [ 1, 2, 3 ]
console.log(bar.length)  // 3
cs

Array () 생성자 함수를 호출할때 인자 개수에 따라 동작이 다르므로 주의 해야한다.

  • 호출할 때 인자가 1개이고, 숫자일 경우 - 호출된 인자를 length로 갖는 빈 배열 생성
  • 그외의 경우 - 호출된 인자를 요소로 갖는 배열 생성


1-2)유사 배열 객체

이름에서 알 수 있듯이 객체인데 배열과 유사한 것 같다.

length프러퍼티를 가진 객체를 유사 배열 객체라고 부른다.

유사배열의 가장 큰 장점객체임에도 불구하고 표준 배열 메서드를 사용하는게 가능하다는 것이다.

1
2
3
4
5
6
7
8
var arr = ['bar'];
var obj = { name : 'foo'length : };
 
arr.push('baz');
console.log(arr)  //  ['bar', 'baz']
 
Array.prototype.push.apply(obj, ['baz']);
console.log(obj);  // Object {1: "baz", name: "foo", length: 2}
cs

apply () 메서드를 사용하면 객체지만 표준 배열 메서드를 활용하는 것이 가능하다.


1-3)기본타입과 표준 메서드

자바스크립트는 숫자, 문자열, 불린값에 대해 각 타입별로 호출 가능한 표준 메서드를 정의하고 있다. 하지만 기본타입의 경우는 객체가 아닌데 어떻게 메서드를 호출할 것인가?

기본 타입의 값들에 대해서 객체 형태로 메서드를 호출할 경우, 이들 기본값은 메서드 처리 순간에 객체로 변환된 다음 각 타입별 표준 메서드를 호출하게 되는 것이다. 메서드 호출이 끝나면 다시 기본값으로 복귀한다.

1
2
3
4
5
6
//숫자 메서드 호출
var num = 0.5;
console.log(num.toExponential(1));  // 5.0e-1;
 
//문자열 메서드 호출
console.log("test".charAt(2));   /// s
cs

객체 처럼 호출할 수 있다.