Thursday, January 2, 2014

jQuery 스타일로 getter, setter 만들기

A라는 클래스의 멤버함수(*)인 getter 및 setter를 jQuery 스타일로 만들어 보자.
즉, propertyName(value)면 propertyName이 value로 세팅되고,
propertyName() 하면 propertyName 값을 반환한다.

//ctor
function A() {
  this.element = $('<div/>').appendTo('body');
}

A.prototype.X = function(x) {  // #
    if(x!=undefined) { // setter
        this.element.attr("x", x);
    }
    else {
        return this.element.attr("x");
    }
}

Remarks
1. 함수 하나가 리턴 값을 가졌다 안 가졌다 하고, 입력 개수 체크도 안 하는 막장스러운 js의 성질 덕분에 이런 멋있는 일을 할 수 있다.
2. 그냥 this._x = x; 이런 식으로 쓸 수도 있는데 굳이 DOM에 attribute로 추가하려고 해 보았다.


* js에는 원래 클래스 개념이 없으므로 사실 멤버 함수 흉내를 낸 거지만.

# 먼 미래에 js를 까먹었을 때를 대비해서 써놓자면, prototype은 js의 키워드이다.

No comments:

Post a Comment

"Gossip Girl" star Michelle Trachtenberg dies at 39

미셸 트랙튼버그 하우스에서 심장 이식 받았던 환자로 나왔는데 현실에서는 간이식을 받았었구나 가십걸이나 버피더뱀파이어슬레이어 이제 정주행해 볼까... 블로그도 다시 살려 볼까 훠훠