0

このような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

私が欠けているという基本的な理解はありますか、それとも本当に常にそうしなければならないのでしょうか?

4

2 に答える 2

1

これは、関数内のアクセスを簡単にするためだけに行う必要はありません。

self変数は、jQuery 関数でコールバックを使用している場合に役立ちます。ここで、操作対象thisの要素に設定されます。例えば:

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

変数oelは、入力を減らすだけです。変数selfまたは参照が変更されていない場合は、オブジェクトからおよびプロパティに直接thisアクセスできます。optionselement

于 2013-11-07T17:30:57.853 に答える
1

オブジェクトリテラルを使用しているため、これらを毎回宣言する必要があります。オブジェクトリテラルを関数呼び出しとしてラップし、その方法で目的を達成できます。

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

オブジェクト リテラルhereの関数を使用してこれに触れる質問もありますが、元の質問を考えると過度に冗長に思えました。

于 2013-11-07T17:38:23.730 に答える