var Object = ( function () 
{
// Construct
var Class = function(initValue)
{   
  
  var _private_var = 0;
  this.public_var = 0;
  
  var private_function = function()
  {
_private_var = 1;
  };
  
  this.public_function = function()
  {
this.public_var = 1;
  };
};
var _private_static_var = 0;
Class.public_static_var = 0;
var private_static_function = function()
{
};
Class.public_static_function = function()
{
};
return Class;
})();




디자인패턴을 공부하면서 어떤 언어든지 객체화하려는 사람들이 너무 대단하다고 생각했다.
정말로 코드를 누구나 이해할 수 있으면서도 만일의 사태가 나타날 가능성을 최소화하는 군더더기 없는 코드를 만든다는 것은
천재성보다도 배려심이라고 느껴진다.

어쨌든, javascript 는 Class를 지원하지는 않지만
이렇게 스크립트 언어를 객체화 시켜서 사용하려는 고수들의 노력에 짝짝짝 b

소스코드 참고



말 나온 김에 Javascript 고수인 더글라스 아즈씨 링크도 함께 ㅇㅇ

Javascript: 세상에서 제일 잘못 이해되고 있는 언어 by Douglas Crokford
http://vandbt.tistory.com/36                 <- 번역 링크 

나도 예전에 처음 javascript 언어 접한 게 디자인과 친구 덕분인지라 C++ 을 배우고 있던 당시에는
자바스크립트 천대했었는데...;
루비, Python, PHP 등 다른 스크립트 언어를 접하고 난 후에는 Javascript 역시도 그런 종류가 아닐까하고 생각한다.
그렇다고 하더라도 더글라스 아저씨가 말하는 OOP 부분은 살짝 변명처럼 들리기는 하지만 =_=;;

요즘 웹 어플을 만들 때는 OOP 기능이 필수적이라 조금 더 지원해주는 게 좋을 것 같은데...
Javascript 도 역사가 오래된 언어이니만큼 어처구니 없는 버그나 또 브라우저마다 차이가 있어서
OOP 를 지원하는데는 시간이 좀 걸리지 않을까싶다.

그렇다고 하더라도 이런 언어를 Public / Private 으로 사용할 수 있는 방법을 생각해낸 사람은 대단하다 
여차하면 절차적인 방법으로 쓰게되서 코드가 엉망이 되는 건 피할 수 있을 것 같아서 좋기도 하고
개발자가 아니라 일반적으로 쓰는 사람들이라면 절대 고안하지 못했을 방법을 보고 있으니까 한 번 더 Javascript 에 대한 인식이 바뀐다.

처음 javascript 에 대한 생각을 다시하게 된 건, 더글라스 아저씨가 인정한 책
The Definitive Guide 책을 읽고 나서부터였는데, 
(더글라스 아저씨가 나쁜 책에는 이상한 예제가 많다고 하지만 사실 이 책도 가끔 안되는 것들이 있다 -ㅁ- 세월이 좀 지나서 그런가?)
javascript 를 정확히 이해한다는 것은 DOM 구조, 그리고 기본적인 클라이언트와 서버의 관계, html 헤더 등을 알아야 가능한 일이라는 것을 알게 되었을 때다.
지금은 javascript 던지 어떤 언어가 되었던지, 복잡한 어플에 맞서는 객체지향을 구현하는 내공이 ....대단하다는 생각이 든다.
물론 더글라스 아저씨가 말하는대로 자바스크립트에 대한 광범위한 오해가 해소되었으면 좋겠다는 생각도 든다.



'Dev Tip' 카테고리의 다른 글

[Javascript] 날짜함수 사용할 때 주의사항  (0) 2014.01.01

+ Recent posts