kakasoo

[javaScript] 객체와 생성자, Symbol() 본문

프로그래밍/JavaScript

[javaScript] 객체와 생성자, Symbol()

카카수(kakasoo) 2020. 8. 2. 13:05
반응형

아는 동생에게 프로그래밍을 가르치며, this에 대해서 설명한 적이 있다.

나는 this를 계속해서, ‘나’라고 설명했다.

너에게 ‘나’는 너일 것이고, 나에게 ‘나’는 나 자신을 가리키는 말인 것처럼,

this는 클래스의 인스턴스들이, 각자 자기 자신을 가리키는 말이라고 말했다.

예컨대 자동차에게 ‘나’는 차종이 아니라, 그 자동차 개체 한 개만을 의미한다는 뜻이었다.


객체지향적인 것

this가 있단 것만으로도 언어는 조금 더 객체지향적이라고 할 수 있다.

Class를 정의한 후 인스턴스를 만든다면, 우리는 깊은 복사를 할 필요 없이 새 객체를 만들 수 있다.

물론 Function을 이용해 재사용성을 의도적으로 없애는 캡슐화도 있긴 하나,

이런 특수한 경우를 제외하고는 대부분의 클래스 기반 언어는 객체지향적이라 할 수 있겠다.

Symbol

객체의 프로퍼티를 정의하기 위해서는 key와 value가 필요하다.

여기서 key는 프로퍼티의 이름으로, 일반적인 경우에는 단순한 문자열로 저장이 된다.

하지만 JavaScript에서는 문자열 외에도 Symbol 이라고 하는 특수한 타입으로도 정의할 수 있다.

Symbol이라는 게 뭘까?

Symbol은 일종의 hash function이라고 이해하면 된다.

캡슐화를 더 높이기 위해, 호출할 때마다 값이 달라지는 Symbol을 이용해 프로퍼티를 정의한다.

반응형