티스토리 뷰
Quick JavaScript (2) Reference
MathTrauma 2022. 9. 1. 01:281. 참조(Reference)
참조라는 용어는 많은 경우 pointer 와 대립되는 개념으로 쓰는 것 같다.
여기서 굳이 메모리 구조나 포인터를 공부할 이유는 없으니 그냥 다음의 사항만 외우자.
JavaScript 에서 reference 는 오직 object type 에서만 발생한다.
다음 코드를 보자.
결과는 x 출력은 여전히 1 이고 y 출력은 2 이다.
이 경우 y 는 x 를 이용했지만 값을 사용했을 뿐 두 변수는 별개의 것이다.
여기서 1 이 Number Type 즉 primitive type 임을 명심하자.
이번에는 object 를 가지고 비슷한 작업을 해보자.
결과를 확인해보면 a 의 name 역시 'math'로 바뀌어 있음을 확인할 수 있다.
if(a===b) console.log('Reference!');
두 변수는 '같은 대상의 다른 이름'이고 이를 참조(reference) 라고 부른다.
다시 한 번 말하지만 object 에 대해서만 참조가 일어난다!
잠깐! 시중에 떠도는 소문에는
'JavaScript 에서는 모든 것이 object 라던데?'
라는 이야기가 있는데 절반은 진실이다.
자바 스크립트는 primitive 들을 편한게 다루기 위해서
Wrapper Object 를 통해서 property 와 method 를 제공한다.
'mathtrauma'.length
C\C++ 에서는 상상할 수 없는 위와 같은 묘기는 Wrapper Object 를 통해서 발생한다.
참고로 위의 코드는
'mathtrauma'['length'];
와 같이 쓸 수 있다. 잘 기억해두자.
모든 property 는 멤버 연산자' . '(dot) 또는 '[ ]' 를 사용해서 접근할 수 있다.
앞의 글에서는 primitive type 들에는 이런 것이 있다는 것만 소개했는데 구체적으로 살펴보자.
2. String
스트링 뿐만 아니만 모든 타입에는 고유의 생성자(constructor)가 있다.
new String('mathtrauma')
문법책에서만 보았을 뿐 써본 적이 없다.
더 웃기는 것은 string 은 primitive type 이지만 위에서 처럼 생성자를 이용해서 만든 것은 string object 이다.
위에서 언급한 Wrapper Object 를 명시적으로 만든 경우이다.
번거롭기 때문에 모든 primitive type 의 생성자를 사용하는 것을 결례이다.
let a='mathtrauma';
와 같이 string literal 로 초기화하는 것이 예절에 부합한다.
\ 로 escape 하는 것처럼 모든 언어에서 대충 공통되는 내용은 생략하자.
메서드들을 정리해 둔다.
마지막 concat( ) 메서드는 주로 ' + ' 를 대신 사용한다.
너무 길어진다. 아직 string 관련해서 template literals 를 언급하지 못했는데...
다음 글로 미룬다.
'Programming Language > JavaScript [초급 -완결]' 카테고리의 다른 글
Quick JavaScript (6) Array 1 (0) | 2022.09.10 |
---|---|
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 |
Quick JavaScript (1) 데이터 타입과 변수 (0) | 2022.09.01 |
- Total
- Today
- Yesterday
- max flow
- map
- python3
- bash script
- RUBY
- script
- C++ big number
- shell
- fenwick tree
- bash
- lazy propagation
- Aho-Corasick
- dynamic programming
- Shell Programming
- 백준
- JavaScript
- persistent segment tree
- segment tree
- math font
- 세그먼트 트리
- 다익스트라
- BOJ
- nearest common ancestor
- number theory
- Dijkstra
- 정수론
- stack
- Vim
- Reference
- javascript array
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |