현재 JavaScript 코드의 작동 방식을 이해하는 데 어려움이 있습니다. 나는 이벤트 핸들러 클로저에서 private object 메소드에 접근 할 때의 문제점을 해결할 수 있었지만, 왜 그렇게 작동하는지 알고 싶다.이벤트 핸들러 클로저에서 public 및 private 메서드에 액세스
(function(module, $, undefined)
{
function myPrivateCode(e){ /*...*/ }
module.myPublicCode = function(e) { /*...*/ }
module.init = function()
{
var that = this;
$('.clickable').click(function(e)
{
if($(e.target).hasClass('classX'))
{
that.myPublicCode(e.target); // requires 'that' to work
}
else
{
// that.
myPrivateCode(e.target); // will fail if 'that' uncommented
}
});
}
}(window.module = window.module || {}, jQuery));
나도 공공 또는 민간 메소드를 호출 클릭 핸들러를 설정 한 코드에서 :
이 코드는 잘 알려진 모듈/플러그인 은유를 사용합니다. that
로컬 변수에 의해 수행되는 이벤트 핸들러 클로저에 객체 참조를 전달해야한다는 것은 완벽하게 생각할 수 있습니다. 나에게 이상한 점은 myPrivateCode
은 참조로 that
을 필요로하지 않으며 "개인 정보"로 인해 실패하지 않는다는 것입니다. 이것은 내가 myPrivateCode
이 적절한 객체가 아니라고 생각하게하고, 예상되는 방식과 어떻게 든 다르게 작동합니다. 누군가가 어떻게되는지 설명 할 수 있을까요? 확실히 나는 뭔가를 놓치고있다.
미리 감사드립니다.
감사합니다. 지금은 분명합니다. – Stan