'2009/02'에 해당되는 글 2건

  1. 2009/02/10 11% (3)
  2. 2009/02/05 Is arguments deprecated? (2)

11%

게으른 일기 2009/02/10 01:45

2009년이 그만큼 갔다.

일에 머리를 파묻고 허우적거리다보니 그리 되었다. 필사적 탈출구로써의 일. 덕분에 끝낼 수 없을 것 같았던 일들 몇 개를 끝냈고, 작년 한 해중 두 개의 계절동안 생각한 것보다 더 많은 아이디어들을 생각해냈다. 설익은 것들 투성이지만. 그리고 그중 몇 개는 별로 쓸모가 없어서 버렸다.

말을 묻어둘만큼의 에너지 - 혹은 주의력이라고 해도 좋다 - 는 언제건 남겨둬야 한다는 것도 깨달았고, 더 중요한 건 어떻게 하면 행복하게 살 수 있느냐는 질문에 대한 나름의 답을 조금은 얻었다는 점일 듯하다. 간단히 말하자면, 살던대로 살아라.... 라는 거. 용 빼는 행복의 비결 따위는 역시, 없더라.

느슨해지지 않기 위해서라도 한 번 쯤은 방점을 찍고 지나가야 할 상황이 되었다.

작년 한 해 길러놓은 체력이 이렇게 유용하게 쓰일 줄은 몰랐다. 역시 일단은 몸이 건강하고 볼 일이다. 몸이 건강하면 정신도 삐딱선을 덜 타고, 남에게도 덜 까칠해지고, 사고에도 균형이 생긴다. 올해도 운동은 꾸준히.

하지만 가끔 지나가는 정신에라도 세상 돌아가는 꼬라지를 보고 있노라면... 분노보단 공포가 느껴진다. 식인종, 아나콘다, 피라냐, 이런 것들에 분노를 느끼지는 않는다. 공포스러울 뿐. 우리네 저질스러운 정신이 화신이 되어 죄값을 집행하는 기분이다. 슬픈 건 그런 때조차 가장 먼저 먹히는 사람들은 먹이사슬 가장 아래 있는 사람들이란 것.

코가 비뚤어지도록 추운 겨울, 버스 정류장 근처 은행의 자동화 코너에 삼삼오오 모여 몸을 녹이며 일거리를 걱정하던 사람들과 정신없이 울려대던 알람 소리는 참 우렁차게도 기억에 남는다. PDA폰을 보면 자꾸 그 생각부터 난다. 왜 저리도 첨단 기술이 집약된 - 옛날에는 상상도 못할 - 물건을 가진 사람들이 여전히 하루 벌이를 걱정하며 셔터 문이 내려지는 은행 자동화 코너에서 쫓겨나듯 몰려나와야 하는 것일까.

저작자 표시

'게으른 일기' 카테고리의 다른 글

11%  (3) 2009/02/10
내가 공부하는 이유  (2) 2008/02/23
요즘 거친 글을 읽을 때 드는 느낌...  (2) 2008/01/25
문득 든 생각  (2) 2007/12/31
탈세, 나도 자유롭지 않다.  (0) 2007/12/17
올해 결산 시에 꼭 검토할 것  (0) 2007/12/17
Trackback 0 : Comments 3

Is arguments deprecated?

IT 2009/02/05 13:35

참고 : 이 글은 http://blog.gloridea.net/1165540616#comment3445356 에 대한 답변성 글입니다. : )

arguments가 deprecated 되었다고 하셔서 깜짝 놀랐네요 -ㅅ-; 그럴리가! 라고 ㅋㅋ;

찾아보니, Function.prototype.arguments 라는 프로퍼티가 deprecated 된 것이더군요. (함수 내부 스코프 체인에 추가되는 arguments 객체 자체는 계속 사용할 수 있습니다.) 이런 형태는 다음과 같이 사용합니다.

function plus(x, y) { 
    console.log(plus.arguments)
    return x + y; 
}
plus(1, 2); 

위 코드를 돌려보시면
function plus(x, y) { 
    console.log(arguments)
    return x + y; 
}
이 코드와 동일하게 동작합니다.

Function.prototype.arguments를 사용할 경우, function literal 표현에서는 자신의 arguments를 구하기가 매우 난감해지겠죠. 위와 같이 named function이야 자기 이름 적어주면 되지만... 그렇지 않다면 다음과 같이 해야 할겁니다. 외부에 반드시 자신의 레퍼런스가 있어야 하죠. 그것도 lexical scope에...

var plus = function(x, y) {
    console.log(plus.arguments);
    return x + y;
}

또 하나의 문제. 그런데 이걸 객체의 프로퍼티로 등록할 때는 어떻게 할 수 있을까요?

var MyNumber = $Class({
    $init: function(x) {
        this.value = x;
    }
    plus: function(y) {
        console.log(this.plus.arguments);
        return this.value + y;
    }
})
이렇게 하면 됩니다만...

call/apply 등과 엮이면 꽤 귀찮아집니다.

var MyOtherNumber = $Class({
    $init: function(x) {
        this.value = x;
    }
});

var num2 = new MyOtherNumber(1);
MyNumber.prototype.plus.call(num2, 2);
// "TypeError: this.plus is undefined" will be raised

function이 독립적인 객체로서 call/apply 등을 통해 다른 객체의 스코프에서 사용될 수 있음을 감안하면
Function.prototype.arguments 때문에 코드의 자유도가 현저히 떨어집니다.

이러한 이유로 아마 Function.prototype.arguments 에서는 제거되고 arguments가 function 내부에서 자동으로
scope chain 내에 포함되는 형태로 바뀐 것으로 보여집니다. 아마 꽤 옛날 일일듯...

저작자 표시
Trackback 0 : Comments 2