Javascript 我是否需要定义';自我'';元素';在JQuery小部件中每个函数的开始处

Javascript 我是否需要定义';自我'';元素';在JQuery小部件中每个函数的开始处,javascript,jquery,jquery-ui-widget-factory,jquery-ui-widget,Javascript,Jquery,Jquery Ui Widget Factory,Jquery Ui Widget,我创建了类似这样的JQuery小部件 <script type="text/javascript"> (function ($) { $.widget("cb.bacon", { _create: function() { var self = this, o = self.options, el = self.element;

我创建了类似这样的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>

(函数($){
$.widget(“cb.bacon”{
_创建:函数(){
var self=这个,
o=自我选择,
el=自我元素;
//一些代码
},
_培根:函数(){
var self=这个,
o=自我选择,
el=自我元素;
//一些代码
},
_smokey:函数(){
var self=这个,
o=自我选择,
el=自我元素;
//一些代码
} 
});
})(jQuery);
我总是在我创建的每个函数中声明
self
选项
元素


我是否缺少一些基本的理解,或者我真的必须一直这样做?

你根本不需要这样做,那只是为了更容易访问函数中的那些内容

当您在jQuery函数中使用回调时,
self
变量很有用,其中
这个
将被设置为您所处理的元素。例如:

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

变量
o
el
只会减少键入。如果变量
self
,或引用
this
未更改,则可以直接从对象访问
选项
元素
属性。

由于使用对象文字,每次都需要声明这些内容。您可以将对象文本包装为函数调用,并通过这种方式实现所需的功能

<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>

函数makeTheBacon(){
var self=这个;
var o=自我选择权;
var el=自我元素;
self.\u create=function(){…};
self._bacon=function(){…};
self.\u smokey=函数(){…};
回归自我;
}
(函数($){
$.widget(“cb.bacon”,makeTheBacon());
})(jQuery);
还有一个问题也涉及到这一点,即在对象文本中使用函数,但考虑到您最初的问题,这似乎过于冗长