Нужно ли мне определять «я», «элемент» и т. Д. В начале каждой функции в виджете jQuery

StackOverflow https://stackoverflow.com/questions/19842499

Вопрос

Я создаю виджеты 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