클래스용 함수내에서 this는 무엇인가?
자바스크립트에는 클래스가 없다. 함수를 이용하여, 클래스처럼 사용한다. 보통 아래의 class1,class2와 같이, 함수내부에서 this에 멤버변수를 할당하는 방식을 사용한다. 그러나, this는 함수가 아닌, Window객체이다. 함수내부의 멤버함수 내부에서 this는 호출한 부모 오브젝트이다. 물론, this에 동일한 이름의 멤버변수가 없는 경우, 문제가 되지 않는다.(잘 돌아간다.) 배열로 만들거나, 동일한 멤버변수(함수)가 존재할 경우, 문제가 된다.
(크롭브라우져에서는) 멤버변수를 만들때, class3()과 같이 사용하는것이 좋을듯 싶다. function class1() { this.a=1;//결론:전역변수(Window이다) 크롭브라우져에서 브레이크 걸어서 확인하면된다. } function class2() { this.a=2; } function class3()//이렇게 사용해라. { var o={}; o.a=3; return o; } function test_class_this1() { console.log("클래스를 만들기위해 함수내에서 this를 사용할 경우, 클래스함수 내에서 this는 무엇인가?"); var a=class1(),b=class2(),c=class3(); console.log("this.a=",this.a); console.log("c.a=",c.a);//c.a= 3 console.log("a.a=",a.a);//Uncaught TypeError: Cannot read property 'a' of undefined console.log("b.a=",b.a); } test_class_this1();
'자바스크립트' 카테고리의 다른 글
8비트, 16비트, 32비트 버퍼 메모리 액세스 (0) | 2017.06.14 |
---|---|
Sleep (0) | 2017.06.12 |
this (0) | 2017.06.08 |
자바스크립트-멤버함수내에서 this를 항상 사용해야하는가?(생략가능한가?) (0) | 2017.06.07 |
sprintf (0) | 2017.05.27 |