티스토리 뷰

 

1. 참조(Reference) 

 

참조라는 용어는 많은 경우 pointer 와 대립되는 개념으로 쓰는 것 같다.

여기서 굳이 메모리 구조나 포인터를 공부할 이유는 없으니 그냥 다음의 사항만 외우자.

 

JavaScript 에서 reference 는 오직 object type 에서만 발생한다.

 

다음 코드를 보자.

primitive 를 이용한 할당.

결과는 x 출력은 여전히 1 이고 y 출력은 2 이다. 

이 경우 y 는 x 를 이용했지만 값을 사용했을 뿐 두 변수는 별개의 것이다.

여기서 1 이 Number Type 즉 primitive type 임을 명심하자.

 

이번에는 object 를 가지고 비슷한 작업을 해보자.

 

object 를 이용한 할당. Reference!

 

결과를 확인해보면 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 하는 것처럼 모든 언어에서 대충 공통되는 내용은 생략하자.

 

메서드들을 정리해 둔다.

 

String Methods...

 

마지막 concat( ) 메서드는 주로 ' + ' 를 대신 사용한다.  

 

 

너무 길어진다. 아직 string 관련해서 template literals 를 언급하지 못했는데...

다음 글로 미룬다.

 

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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
글 보관함