티스토리 뷰
자바 스크립트에서는 primitive type 을 제외하면 모두 object 임을 말한 바 있다.
배열(array)은 primitive type 이 아니므로 object 이다.
미리 정의된 많은 메서드가 제공되는 built-in object 이다.
어라! 근데 아직 object 가 뭔지 얘기하지 않은 것 같은데?
object 는 key, value 쌍들을 중괄호 { } 로 감싼것이다!?
const obj ={
key1 : value1,
...
keyn : valuen
};
뭔가 허전하지만 일단 배열 얘기를 하던 중이니 배열로 돌아간다.
빈 배열을 미리 만들어 놓고 쓰는 일은 흔하다.
const numbers=[]
// const numbers = new Array(); 위와 같은 코드
배열의 원소를 몇 개 추가해 보자.
원소를 세 개 추가했는데 index 를 1 에서 건너 뛰어서 5 번 위치에 'five' 를 집어 넣었다.
length of Array
그렇다면 길이는?
마지막 줄에 보는 바와 같이 건너 뛴 index 가 존재하는 것처럼 6 이 나왔다. (0-base index 니까 5 번 위치까지 6 개의 원소)
index 2,3,4 에 해당되는 값들은 undefined 이다.
빈 배열에 순차적이지 않은 위치에 새 값을 대입할 수 있는 것은 python 에서도 흉내낼 수 없는 것이다.
그리고 배열에서 제공하는 length 는 mutable 이다.
응? 뭔 소리지?
numbers.length = 2;
를 실행해 보라.
읽기 전용이어야 할 것 같은 배열의 길이를 나타내는 속성(property) length 는 변경이 가능하다.
그리고 변경하면 그에 따라 배열의 길이가 줄어들거나 늘어난다.
이걸 처음 알았을 때, 난 놀랐는데...
배열과 비슷한 객체를 만들기
아니 배열은 이미 객체라고 해놓고 이건 또 무슨 해괴한 소리인가?
다시 객체 이야기를 조금 해 보자.
일단 객체로 배열과 비슷한 것을 만들어 본다.
위 코드로 배열이 첨자를 기반으로 접근하는 것과 같은 방식으로, 객체가 key 를 사용할 수 있음을 알 수 있다.
데이터 관점에서만 보면 두 가지를 구분할 이유는 없다.
각종 메서드나 속성이 제공되지 않고 있지만 그것도 비슷하게 정의할 수 있다.
자바스크립트가 내부적으로 배열이나 함수 같은 built-in object 를 어떻게 다루는 것인지 모르지만,
'모든 것이 객체' 라는 식으로 객체를 강조하는 것은 위와 같은 측면 때문이다.
그리고 첫 글에서 객체는 값의 일종이라 했다. 이는 배열이나 함수는 변수에 할당가능함을 알려준다.
배열과 관련된 속성과 메서드는 다음 글에서 정리한다.
'Programming Language > JavaScript [초급 -완결]' 카테고리의 다른 글
Quick JavaScript (8) Array - Iterators (0) | 2022.09.26 |
---|---|
Quick JavaScript (7) Array 2 (1) | 2022.09.20 |
Quick JavaScript (5) Type Conversion (0) | 2022.09.07 |
Quick JavaScript (4) Number 1 (0) | 2022.09.03 |
Quick JavaScript (3) Template Literal 과 Symbol (2) | 2022.09.01 |
- Total
- Today
- Yesterday
- bash
- BOJ
- Dijkstra
- max flow
- Vim
- lazy propagation
- 백준
- nearest common ancestor
- script
- Shell Programming
- JavaScript
- fenwick tree
- python3
- C++ big number
- math font
- dynamic programming
- number theory
- persistent segment tree
- segment tree
- 세그먼트 트리
- shell
- 정수론
- javascript array
- Aho-Corasick
- bash script
- 다익스트라
- RUBY
- stack
- Reference
- map
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |