有人可以用一种非常简单的方式帮助解释jQuery扩展吗?

Sam*_*tar 2 jquery datatables

我有以下代码:

     $.extend($.fn.dataTableExt.oSort, {
        "datetime-uk-pre": function (a) {
            from = a.split(' ');
            var ukDatea = from[0].split('/');
            var ukTimea = from[1].split(':');
            return (ukDatea[2] + ukDatea[1] + ukDatea[0] + ukTimea[1] + ukTimea[0]) * 1;
        },
        "datetime-uk-asc": function (a, b) {
            return ((a < b) ? -1 : ((a > b) ? 1 : 0));
        },
        "datetime-uk-desc": function (a, b) {
            return ((a < b) ? 1 : ((a > b) ? -1 : 0));
        }
    });

    $.extend($.fn.dataTableExt.oSort, {
        "date-uk-pre": function (a) {
            var ukDatea = a.split('/');

            return (ukDatea[2] + ukDatea[1] + ukDatea[0]) * 1;
        },
        "date-uk-asc": function (a, b) {
            return ((a < b) ? -1 : ((a > b) ? 1 : 0));
        },
        "date-uk-desc": function (a, b) {
            return ((a < b) ? 1 : ((a > b) ? -1 : 0));
        }
    });
Run Code Online (Sandbox Code Playgroud)

我读到有关延伸但仍然不明白它在做什么.有人可以帮忙解释一下.我正在寻找的是尽可能简单的解释.我也可以用某种方式组合这两个代码块.

这是为数据表提供不同排序方式的代码.但是这是什么意思:

$.fn.dataTableExt.oSort
Run Code Online (Sandbox Code Playgroud)

Joã*_*lva 5

DataTables在基础包中提供了几个排序选项.您正在查看的那个称为基于类型的列排序,它基本上将尝试根据其类型对列进行排序.数据表已经规定默认的排序功能的最常见类型,如Date,NumericHTML.这些在被调用的对象中注册为属性,oSort可以使用$.fn.dataTableExt.oSort.这个对象看起来像这样:

oSort = {
  "string-pre": function ( a ) {
    // ...
  },
  "numeric": function ( a ) {
    // ...
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果需要自定义类型的自定义排序功能,则可以通过向oSort对象添加其他或属性来扩展oSort对象.

例如,要添加一个名为的新类型date-uk-pre,您可以使用:

$.fn.dataTableExt.oSort['date-uk-pre'] = function ( a ) {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

也就是说,你扩展oSort一个所谓的新特性date-uk-pre.jQuery $.extend()只不过是这个的捷径.而不是添加人工每个属性,为每一个新的类型,你传递一个新的对象,与所有的新类型(例如,date-uk-pre,datetime-uk-pre,和jQuery 合并它们与现有的oSort对象,与新的功能有效地延长了.你甚至可以结合两种$.extend()一个人:

$.extend($.fn.dataTableExt.oSort, {
    "date-uk-pre": function (a) {
        var ukDatea = a.split('/');

        return (ukDatea[2] + ukDatea[1] + ukDatea[0]) * 1;
    },
    "date-uk-asc": function (a, b) {
        return ((a < b) ? -1 : ((a > b) ? 1 : 0));
    },
    "date-uk-desc": function (a, b) {
        return ((a < b) ? 1 : ((a > b) ? -1 : 0));
    },
    "datetime-uk-pre": function (a) {
        from = a.split(' ');
        var ukDatea = from[0].split('/');
        var ukTimea = from[1].split(':');
        return (ukDatea[2] + ukDatea[1] + ukDatea[0] + ukTimea[1] + ukTimea[0]) * 1;
    },
    "datetime-uk-asc": function (a, b) {
        return ((a < b) ? -1 : ((a > b) ? 1 : 0));
    },
    "datetime-uk-desc": function (a, b) {
        return ((a < b) ? 1 : ((a > b) ? -1 : 0));
    }
});
Run Code Online (Sandbox Code Playgroud)