我如何重写JQuery(数据表行组)库函数?

问题描述 投票:0回答:1

我对Java语言还很陌生,在研究开放源代码库时,范围界定语法确实使我感到困惑,特别是当它具有许多高级概念(如闭包,匿名函数等)时。Jquery Datatables RowGroup有点buggy具有响应能力,因此我大胆尝试编写自己的解决方案。

下面是RowGroup library中的相关代码段,https://cdn.datatables.net/rowgroup/1.1.1/js/dataTables.rowGroup.js中的源代码

/** <Not sure what is going on here!> */
(function (factory) {
    if (typeof define === 'function' && define.amd) {
        // AMD
        define(['jquery', 'datatables.net'], function ($) {
            return factory($, window, document);
        });
    } else if (typeof exports === 'object') {
        // CommonJS
        module.exports = function (root, $) {
            if (!root) {
                root = window;
            }

            if (!$ || !$.fn.dataTable) {
                $ = require('datatables.net')(root, $).$;
            }

            return factory($, root, root.document);
        };
    } else {
        // Browser
        factory(jQuery, window, document);
    }
}(function ($, window, document, undefined) {
    /** </Not sure what is going on here!> */
    'use strict';
    var DataTable = $.fn.dataTable;

    var RowGroup = function (dt, opts) {
        //...
    };
    $.extend(RowGroup.prototype, {
        //...
        _constructor: function () {
            //...
            dt.on('responsive-resize.dt', function () {
                that._adjustColspan();
            });
        },

        /** I would like to override this function, externally */
        _adjustColspan: function () {
            @ @override
        }
    });
}));

尽管它是open source,但我不想直接修改该库,而是想从一个单独的Javascript文件(该库之后将包括该函数)中覆盖函数_ adjustColspan。这将使库仍可轻松进行更新,并且可以轻松跟踪任何自定义更改。

因此,首先,我要完成的目标是否可行?如果可能,我将如何在外部.js文件中覆盖此功能?

编辑:看来我想做的是铸造的“ Monkey patching

javascript jquery datatables datatables-1.10
1个回答
0
投票
const RowGroup = $.fn.DataTable.RowGroup; RowGroup.prototype._adjustColspan = function() { // do your own things here }

例如,您可以在开发工具中通过https://datatables.net/extensions/rowgroup/examples/styling/jqueryui.html进行测试。输入$.fn.DataTable.RowGroup.prototype会给我们:

{​ _adjustColspan: function _adjustColspan()​ _colspan: function _colspan()​ _constructor: function _constructor()​ _draw: function _draw()​ _group: function _group(b, g)​ _groupDisplay: function _groupDisplay(b, a)​ _rowWrap: function _rowWrap(b, g, c)​ constructor: function h(b, g)​ dataSrc: function dataSrc(b)​ disable: function disable()​ enable: function enable(b)​ <prototype>: Object { … } }

© www.soinside.com 2019 - 2024. All rights reserved.