Я довольно новичок в Javascript, и синтаксис определения области действия определенно смущает меня, когда я смотрю на библиотеки с открытым исходным кодом, особенно когда в нем много продвинутых понятий, таких как замыкание, анонимные функции и т. Д. c. Jquery Datatables RowGroup немного глючит с отзывчивостью, поэтому я предпринял смелую попытку написать свою собственную попытку решения.
Ниже приведен соответствующий фрагмент из библиотеки RowGroup , исходный код 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
}
});
}));
Хотя это с открытым исходным кодом вместо того, чтобы изменять библиотеку напрямую, я хотел бы переопределить функцию _adjustColspan из отдельного файла Javascript (который будет включен после этой библиотеки). Это позволит библиотеке по-прежнему обновляться без проблем, и любые пользовательские изменения могут быть легко отслежены.
Итак, во-первых, возможно ли то, что я пытаюсь сделать sh возможным? Если это возможно, как бы я go о переопределении этой функции во внешнем файле. js?
Редактировать: Кажется, что я пытаюсь сделать, придумано " Исправление обезьяны"