簡體   English   中英

如何在JS中重新定義對象方法?

[英]How to redefine object method in JS?

我想重載插件的方法。

這是我使用的插件。 http://www.owlgraphic.com/owlcarousel/owl-carousel/owl.carousel.js

該庫包含以下方法:

 updateControls : function () {
            var base = this;
            base.updatePagination();
            base.checkNavigation();
            if (base.owlControls) {
                if (base.options.items >= base.itemsAmount) {
                    base.owlControls.hide();
                } else {
                    base.owlControls.show();
                }
            }
        },

這是我的方法重載腳本:

jQuery(document).ready(function($){
            $.fn.owlCarousel = $.extend($.fn.owlCarousel, {
                updateControls:function()
                {
                    console.log("!!");
                    var base = this;
                    base.updatePagination();
                    base.checkNavigation();
                    if (base.owlControls) {
                        base.owlControls.show();
                        base.owlControls.show();
                    }
                }
            });
        })

console.log("!!"); 似乎沒有被叫-我在做什么錯?

在這種情況下,似乎owlCarousel的初始化owlCarousel不接受覆蓋updateControls內部函數的選項。 您可能需要修改庫以接受(並使用)對updateControls函數的替代。

這種編輯的一個示例是修改庫中的init函數,盡管我建議使用options對象來覆蓋該函數。

var Carousel = {
    init : function (options, el) {
        var base = this;

        base.$elem = $(el);
        base.options = $.extend({}, $.fn.owlCarousel.options, base.$elem.data(), options);

        base.userOptions = options;

        // check for override in options of updateControls function
        if (typeof base.userOptions.updateControls == "function") base.updateControls = base.userOptions.updateControls;

        base.loadContent();
    }

就像在第二個代碼示例中所做的那樣,此修改后的init函數將允許您指定updateControls函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM