12월, 2011의 게시물 표시

자바스크립트

부제를 정하지 못해서 그냥 안썼습니다. 죄송합니다. 제 지식이 너무 얕아서 무엇이라고 정해야 할지 몰르겠습니다. 그럼 시작하겠습니다. 오늘 공부를 하다가 깨닭은 바가 있어서 정리를 합니다. 그리 거창하고 대단한것은 아니지만 자바스크립트에 한발 더 다가갈 수 있을 꺼 같습니다. 보통 객체 지향적으로 자바스크립트를 코딩할때 var C = function() { var x = 'txt'; this.getX(){ return x; }; }; var c= new C(); 또는 var C = function(x) { this.x = x; } C.prototype.getX(){ this.x; }; var c = new C('txt'); 이렇게 씁니다. 저는 이것을 가지고 깊은 생각을 했습니다. 왜 그렇게 쓰는 것일까? 책을 찾아보던 중 new라는 전치 연산자에 대해서 나옴니다. new를 쓰고 뒤에 함수쓰고 해당 함수 안에 return문이 없으면 해당 this를 반환한다. 즉 var c= new C(); 이건 객체를 생성하고 해당 this를 반환한다는 의미라는 것입니다. 또한 우리가 객체를 편하게 생성할때, var c = new Object();를 사용해도 되고, var c = {};라고 해도 됩니다. 좀 산으로 갔군요. 다시 원위치로 그럼 var c는 해당 객체에 대한 주소(? 확신이 없음)값 비스무리한것을 가지게 됩니다. 그래서 안에 있는 메소드를 참고할 때는 c.getX() 이러면 해당 메소드를 불러낼 수 있습니다. 즉 요런 느낌이 들면 됩니다. c가 가리키고 있는 메모리 영역으로 가서 그 안에 있는 getX() 메소드를 실행해라. 여기서 전 또하나의 의문이 들었습니다. var f = function(){}; f.a = function(){}; 이게 되는냐에 대한 의문입니다. f는 Objec