Javascript namespace or encapsulation

C, C#, C++, JAVA 등 에서의 "namespace, private variable, private method" 같은 효과들을 javascript에서 어떻게 비슷하게나마 구현할 수 있는지에 관한 이야기. (자세한 정리는 에서 보시길. 제대로 정리하기가 귀찮아서 -ㅇ-;;; 하더라도 천천히 나중에나 할듯.)
(예전에 공부하면서 그냥 대충만 정리해 놓은것들이라;;; 여기선 정말 대충, 엉터리로 정리해놨으니 reference들 참고해서 공부하세요.) Closure란 특성을 이용하는 것인데... Garbage collection과도 관련이 있고... Closure란 단어가 너무 추상적인듯도... closure 특성이라고 많이들 이야기 하는거 같은데, 이름에서 이 특성이 무엇인지에 대한 감을 잡기가 참 힘든.

Table of Contents

Javascript namespace

Javascript 자체가 client 쪽에서 돌아가는 경우가 많아서 처음 동작/처리에만 쓰이고 나중에 다시 쓰이는 변수들이 아니라면, 처리후에는 메모리 상에서 사라져 주는것이 여러면에서 좋다. 사용자 (client) 의 컴퓨터가 느려지지 않게 해주기도 하고... 한 웹페이지에서 여러 javascript를 load해서 쓰는 경우라면 중복된 전역변수들 (global variables) 은 덮어씌워지게 되면서 다시 사용될때에는 의도와 다르게 동작할수도 있고 에러가 날수도 있어서 namespace 같은 것들을 써서 중복을 방지해 주는 것도 중요한데, 기본적으로 javascript에서 지원하지는 않으니 javascript object (array 비슷한 것인데, 더 확장된 형태의 데이터 저장형식) 의 특성 및 closure 특성을 이용해서 비슷하게 구현할 수 있다.
Syntax Highlighting of Programming Codes

		
		
		

Example (struct.js)

좋은 예제를 찾은듯.

	

References and Related Articles

  1. stackoverflow.com - Javascript Namespace Declaration [closed], 2009-05-19, asked by trustyfrog;
    // I think that the answer answered by Jaco Pretorius is the best.
  2. appendto.com - How Good C# Habits can Encourage Bad JavaScript Habits: Part 1, 2010-10-07, by mikehostetler;
    // 바로 위 stackoverflow 답변에 달려있는 링크. 제목이 내용을 제대로 파악하지 못하게 만들어진듯. 다른 언어 (C#, C++, JAVA 등) 에서의 "namespace, private variable, private method" 같은 효과들을 javascript에서 어떻게 비슷하게나마 구현할 수 있는지 설명되어 있음. (완벽히 같다고 보기는 힘들듯.) 뒷부분은 간단히 "Declaring Arrays & Objects"에 관해서도 설명.
  3. firejune.com - 자바스크립트 바이너리 데이터 스트럭쳐 - struct.js, 2014-08-02
  4. Basic stuff

  5. MDN (Mozilla Developer Network) - JavaScript Guide - Values, variables, and literals;
    // Variable scope, hoisting 개념 등 챙겨봐야 할 것들이 많음. 이런 특성은 언어별로 다른/독특한 부분이라 챙겨봐야할듯.
  6. MDN (Mozilla Developer Network) - JavaScript Guide - Closures;
    // function 속의 local variable들이 function이 실행된 뒤에도 어떻게 살아남을 수 있는지 설명. Javascript 자체가 뭔가 애매하게 디자인 되어 있는듯? "object-based language based on prototypes" 의 특성을 살리려고 이렇게 디자인 되었다고 하는데... 뭔가 바로 와닿지는 않음. "They share the same function body definition, but store different environments."
  7. jibbering.com - FAQ notes - Javascript Closures; "A closure is formed when one of those inner functions is made accessible outside of the function in which it was contained, so that it may be executed after the outer function has returned."
저작자 표시 비영리 변경 금지
신고
Posted by 냥냥 kipid
comments powered by Disqus