클릭(이벤트) 전 this 는 아래처럼 구성되어 있습니다. (크롬 개발자도구) 클래스에 프로퍼티와, prototype에 메서드가 정의되어 있는 걸 볼 수 있습니다.
1
2
3
4
5
6
7
8
9
10
TabMenu
$selectMenu:null
$tab:n.fn.init[1]
$tabMenus:n.fn.init[6]
__proto__: Object // = prototype
constructor:TabMenu()
init: function(el)
initEvent: function()
setSelectMenu: function($thisMenu)
__proto__: Object
1
2
3
4
5
6
TabMenu.prototype.initEvent = function(){
var objThis = this;
this.$tabMenus.on("click", function(){
objThis.setSelectMenu($(this));
});
}
위 코드에서 this.$tabMenus.on("click",... 클릭을 하면 this가 클릭한 li요소로 되어버립니다. (이벤트에서 this는 이벤트를 발생시킨 객체이기 때문입니다.) 따라서 변수 objThis에 본래의 this를 저장하여 objThis.setSelectMenu($(this));로 사용한 것입니다.