문제

나는 이와 같은 jQuery 위젯을 만듭니다

<script type="text/javascript">
(function ($) {
        $.widget("cb.bacon", {
            _create: function() {
                var self = this,
                    o = self.options,
                    el = self.element;

                 // Some code

            },

            _bacon: function() {
                var self = this,
                    o = self.options,
                    el = self.element;

                 // Some code
            },

            _smokey: function() {
                var self = this,
                    o = self.options,
                    el = self.element;

                 // Some code
            } 
        });
    })(jQuery);                 
</script>

나는 항상 선언해야한다 self, options, element 내가 만든 각 기능에서.

내가 놓치고 있다는 근본적인 이해가 있습니까, 아니면 항상 그렇게해야합니까?

도움이 되었습니까?

해결책

당신은 전혀 그렇게 할 필요가 없습니다. 그것은 단지 함수 내부에 더 쉽게 액세스 할 수 있도록하는 것입니다.

그만큼 self 변수는 jQuery 함수에서 콜백을 사용할 때 유용합니다. this 당신이 행동하는 요소로 설정됩니다. 예를 들어:

$('.bacon').each(function(){ $(this).css('background', self.getBackground()); });

변수 o 그리고 el 타이핑이 적을수록 만듭니다. 정맥류가있는 경우 self, 또는 참조 this 변경되지 않으면 액세스 할 수 있습니다 options 그리고 element 객체의 속성 직접.

다른 팁

문자 그대로 사용하기 때문에 매번 이러한 것들을 선언해야합니다. 객체 문자를 함수 호출로 랩핑하고 원하는 방식으로 원하는 것을 달성 할 수 있습니다.

<script type="text/javascript">
function makeTheBacon() {
    var self = this;
    var o = self.options;
    var el = self.element;

    self._create = function() {...};
    self._bacon = function() {...};
    self._smokey = function() {...};
    return self;
}

(function ($) {
    $.widget("cb.bacon", makeTheBacon());
})(jQuery);
</script>

객체 문자 그대로 함수를 사용하여 이에 대한 질문도 있습니다. 여기, 그러나 그것은 원래 질문을 고려할 때 지나치게 장점으로 보였습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top