Javascript 如何在JS中重新定义对象方法?
我想重载一个插件的方法 这是我使用的插件。 该库包含以下方法:Javascript 如何在JS中重新定义对象方法?,javascript,jquery,inheritance,extend,overloading,Javascript,Jquery,Inheritance,Extend,Overloading,我想重载一个插件的方法 这是我使用的插件。 该库包含以下方法: updateControls : function () { var base = this; base.updatePagination(); base.checkNavigation(); if (base.owlControls) { if (base.options.items >= ba
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
的初始值设定项似乎不接受覆盖updateControls
内部函数的选项。您可能需要修改库以接受(并使用)对updateControls
函数的覆盖
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
函数,尽管我建议使用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
函数,就像您在第二个代码示例中所做的那样