자바스크립트
부제를 정하지 못해서 그냥 안썼습니다.
죄송합니다. 제 지식이 너무 얕아서 무엇이라고 정해야 할지 몰르겠습니다.
그럼 시작하겠습니다.
오늘 공부를 하다가 깨닭은 바가 있어서 정리를 합니다. 그리 거창하고 대단한것은 아니지만
자바스크립트에 한발 더 다가갈 수 있을 꺼 같습니다.
보통 객체 지향적으로 자바스크립트를 코딩할때
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는 Object가 아니니까 안되지 않을까 생각도 했지만.. 실행하면 너무나 자연스럽게 실행됩니다.
댓글
댓글 쓰기