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

 



 

 

 

 

자바스크립트에 훤-한 사람은 아닌지라 요런 건 생각도 못했다.

너무 잘 만들어진 라이브러리들을 믿고 사용했기 때문인지도 모르겠는데,

자바스크립트 날짜 함수의 함정에 푹푹 빠지고, 버그를 조금 경험했다.

 

다행히 심각한 문제는 아니었는데, 자바스크립트 문제라는 것을 금방 알게 되어서 수정했다.

 

 

 

 

1. getYear() 은 반드시 getFullYear() 로 써야한다.

 

이것은 Y2K 문제의 일종인데, 지금 2013년 와서 내가 Y2K 문제를 만날 거라고는 생각도 못했다 

1999년도 까지는 정상적으로 출력이 되지만, 2000년 이후로는 정상출력이 안된다.

2013년의 경우 113 이라고 출력된다.

 

상세한 설명은 검색했던 아래의 링크를 참고하자.

http://blog.naver.com/sayhyub/50163153152

 

그러니까 절대로 getYear() 대신 getFullYear() 로 사용하자.

 

 

 

 

 

 

2. getMonth() 는 1월을 0으로 출력한다. 즉, -1 씩 적게 출력함.

 

아놔ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ누구야 누가 이렇게 만들었엌ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

getMonth면 당연히 월이 정확히 출력되어야지 왜 0부터 시작하는거야ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

생각도 못했네 ㅋㅋㅋㅋㅋ

 

다른 언어를 쓰다가 가끔 자바스크립트 쓰는 나로써는 이해가 안가는 문제ㅋㅋㅋ

나라면 이렇게 안 만들었을거야 !! 함수 이름에 정확히 부합하지 않잖아 !! 

 

 

어쨌든 getMonth() 는 0부터 시작해서 월을 세기 때문에, 출력해서 사용할 때는 1 을 더해줘야 한다.

 

 

 

소소하지만 정말 간과하기 쉬운 내용이라 적어놓음 ㅋㅋ

당연히 될거라고 생각하고 써놨더니 왜들 이러는 거임 ㅋㅋㅋ

 

 

 

 

 

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

[Javascript] 객체 만들기 :D  (0) 2014.01.01

+ Recent posts