뚱뚱한 화살과 this와 jQuery
ES6에서는 function 대신 **화살표 함수(=>)**를 사용합니다. 영어로 Fat Arrow(뚱뚱한 화살)라고 부르는 표기법은 단순히 function을 바꾼 것으로 알고 있는 분들이 계시지만 실제론 그렇지 않습니다.
위의 예시는 두 차이를 극명하게 보여줍니다.
1. #element1****의 this : element1
2. #element2****의 this : global
이유는 화살표 함수에서의 this와 function에서의 this가 다르기 때문입니다. 화살표 함수 안의 this는 함수 밖의 this와 같은 값을 가집니다. 그렇기 때문에 element2와 같이 코딩을 하는 경우 함수 밖의 영향을 받아 this가 매번 변화할 수 있습니다.
그러면 어떻게 기존 jQuery 코드를 화살표 함수 형태로 변경할 수 있을까요?
위와 같이 화살표 함수 내에 매개변수를 넣어 선택된 엘리먼트를 지정해줍니다. 이렇게 하면 위에서와 동일한 작동합니다.
위의 코드를 작동시켜보면 선택된 엘리먼트 뿐 아니라 자녀 엘리먼트에게도 영향을 줍니다. 부모 엘리먼트인 element1 하위의 모든 엘리먼트에 영향을 주게 되는데 element1에만 영향을 주고 싶다면 아래와 같이 하면 됩니다.
위의 코드를 해석하면 element1이 포함하는 모든 구역에서 클릭이 될 때 element1에만 'clicked' 클래스가 추가됩니다. 자녀 엘리먼트는 영향을 받지 않습니다.
조금 더 나아가서 엘리먼트 하위의 특정 자녀들에게만 이벤트를 부여하는건 어떻게 할 수 있을까요?
이렇게 #my-list에 대해서 이벤트를 하나 부여하여 모든 태그에 대해서 동일한 이벤트를 부여할 수 있습니다. 위의 코딩 스타일은 각각의 li에 이벤트를 부여하는 것보다 자원을 아낄 수 있을 뿐 아니라 유지보수에도 도움을 줍니다.
More from Howdy의 블로그
See all posts궤변(诡辩)은 무엇인가? 어느날 아이가 장자에게 물었다. "궤변이 무엇입니까?" 장자가 되물었다. "우리 집에 손님 둘이 왔다. 한 명은 아주 깨끗하고, 한 명은 아주 더러웠다. 내가 둘 다 목욕하라고 하면 누가 씻을 것 같니?" 아이가 대답했다. "당연히 더러운 사람이겠죠!" 장자가…
궤변(诡辩)
특별한 법칙은 아니지만 자주 생각하려는 법칙이 있다. 향기의 법칙이라고 명명한 이 법칙은 무척이나 간단하다. 어떠한 상황에서든 상대를 유혹하라는 것이다. 원하는 것이 있다면 상대방이 원하도록 유혹하는 것이다. 이는 아주 간단한 원칙인데 동시에 매우 달성하기 어려운 법칙이기도 하다. 향…
향기의 법칙
하루가 멀다하고 사고가 터지는 것이 인간사. 인간이 만든 것 중 무엇이 대단하다 말할 수 있을까. 무엇이 완전하다 말할 수 있을까. 무엇이 영원하다 말할 수 있을까. 영원한 것은 단 하나도 없고 먼지가 쌓이지 않는 것도 단 하나도 없다. 기회 역시 영원하지 않아서 영원할 것 같은 젊음…
영원하지 않다
이카루스는 태양에 가까이 가면 안된다는 것을 알았으나 높게 날았다. 깃을 붙인 밀납이 녹아 깃이 떨어져 나가고 나서야 그는 자신의 미래를 보았다. 자유로 향하는 날개를 얻었을 때 태양을 향해서도 바다를 향해서도 안됐다. 고도를 유지하며, 섬세하게 바람을 타지 않는다면 어디로든 날아갈…
Comments