سؤال

أقوم بإنشاء مصغاة 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 فقط يجعل الكتابة أقل. إذا كان لديك varaible 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