Archive for March, 2008

JavaScript에서 클래스를 사용할 때의 생성자

JavaScript에서는 function 객체를 클래스 타입이자 생성자로 사용할 수 있다. 다음은 간단한 예제 코드이다.

function typeClass() {
 
}
 
var oInstance = new typeClass;

인스턴스를 생성할 때 사용한 클래스 겸 생성자인 typeClass는 인스턴스 객체의 constructor 속성으로 접근할 수 있다. 이는 Array, Object 등을 비롯한 JavaScript의 코어 객체도 마찬가지다.

function typeClass() {};
 
var oInstance = new typeClass;
 
alert(oInstance.constructor == typeClass);

한편, 함수의 prototype 속성을 이용하면 상속도 가능하다. 이용해서 한꺼번에 메소드, 프로퍼티를 정의할 수도 있다. 유명한 프레임웍인 prototype.js 도 기본 원리는 다음의 코드와 비슷하게 구현이 되어있다.

function typeClass() {};
 
typeClass.prototype = {
	method : function(){}
};
 
var oInstance = new typeClass;

이제 아까와 마찬가지로 constructor 속성에 접근해보도록 하자.

function typeClass() {};
 
typeClass.prototype = {
	method : function(){}
};
 
var oInstance = new typeClass;
 
alert(oInstance.constructor == typeClass);

어째 결과가 이상하지 않은가? typeof 연산자로 체크해봐도 oInstance.constructor 는 “function”이 아닌 “object” 타입으로 출력된다. 확실한 원인은 모르겠으나 prototype이 재정의되면서 이러한 문제가 발생하는 것 같다. 아래 코드에서는 여전히 constructor 가 function 으로 출력되고, typeClass는 oInstance의 클래스 타입이다.

function typeClass() {};
 
typeClass.prototype.method = function(){};
 
var oInstance = new typeClass;
 
alert(oInstance.constructor == typeClass);

이 같은 문제를 다음과 같은 두 가지 방법으로 해결할 수 있다.

  1. typeClass.prototype 을 재정의하지 않고 각각의 프로퍼티나 메소드를 덧붙인다.
  2. typeClass의 prototype.constructor 를 재정의한다.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    function typeClass() {
    }
    typeClass.prototype = {
    	method : function() {
    	}
    }
    typeClass.prototype.constructor = typeClass;
     
    var oInstance = new typeClass;
    alert(oInstance.constructor == typeClass);

추가 // prototype.js에는 이런 문제가 수정되어있습니다. 제가 보던 때와는 달리 많이 변경된 것 같습니다. ^^;;

네이버 툴바에서 검색했는데 다음으로?

팀 동료들과 회식 후 오붓이 스타 한판을 즐기기 위해 모처럼 PC방에 와 있다갔었다(어제 포스팅하려다 못해서…).

스타하면 질럿만 뽑는 수준의 실력이라서 초반에 깨지고 열심히 서핑하던 중… 올블로그에서 아래와 같은 글을 보고서 믹시가 뭔지 궁금해졌다. 이전에도 올블에서 슬쩍 봤던 것 같은데… 메타 블로그 사이트였구나. 라는 생각으로 설치되어있던 네이버 툴바를 사용해 검색해보았다.

naver_toolbar.png

보면 알겠지만 난 분명 네이버 툴바에서 믹시를 검색하고 있었다. 저건 아무리 봐도 네이버 툴바가 맞다! 당연한 것을 왜 자꾸 강조하냐면… 나타난 결과가 다소 황당했기 때문이다. Read more

올블로그 직원채용때문에 시끌

정희주님의 글 – “올블로그 공채 합격. 그리고 일방적인 입사취소 통보를 받다“라는 글을 봤다.

allblog1.png

주 요지인 즉 이렇다.

지방에 사는 정희주님이 올블 공채에 최종 합격되었단다. 그래서 공부를 위해 고향에서 떨어져 따로 얻었던 자취방도 정리하고, 다니던 학원도 정리하고 학교에 증명서 떼러가는데 전화가 왔단다. 입사가 취소 되었다고… 어이가 없었던 정희주님은 자신이 탈락된 이유를 물었으나 죄송하다는 말, 커뮤니케이션에 문제가 있는 것 같다라는 말을 들었다.

자세한 사항은 원본글을 읽어야 확실히 알 수 있을 것 같다. 단어 하나를 더 넣고 빼면 편파적일 수도 있는 글이라서 꽤 조심스럽다. 블칵 사장인 하늘이님은 결혼 준비로 바쁘신 와중에 골빈해커님이 무언가 글을 올렸나보다. Read more

Page 1 of 41234