Can someone help explain jQuery extend in a very simple way?
我有以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | $.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)); } }); |
我读到有关延伸但仍然不明白它在做什么。 有人可以帮忙解释一下。 我正在寻找的是尽可能简单的解释。 我也可以用某种方式组合这两个代码块。
这是为数据表提供不同排序方式的代码。 但是这是什么意思:
1 | $.fn.dataTableExt.oSort |
1 2 3 4 5 6 7 8 | oSort = { "string-pre": function ( a ) { // ... }, "numeric": function ( a ) { // ... } } |
但是,如果需要自定义类型的自定义排序功能,则可以通过向
例如,要添加名为
1 2 3 | $.fn.dataTableExt.oSort['date-uk-pre'] = function ( a ) { // ... } |
也就是说,您正在使用名为
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | $.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)); } }); |
extend函数将第二个参数中定义的属性添加到第一个参数中的对象。通常它用于向插件添加更多功能,就像在上面的代码中一样。上面的代码为
1 | $('selector').dataTableExt.oSort.date-uk-pre(); |
像这样:
1 2 3 4 5 6 7 8 9 10 11 12 | var m1 = {'a':'a','b':'b'}; var m2 = {'c':'c','d':'d'}; var m3 = {'e':'e','f':'f'}; $.extend(m1,m2,m3); console.log("m1:"); console.log(m1); //Result : //m1: //{'a':'a','b':'b','c':'c','d':'d','e':'e','f':'f'}; |
另外,对于一个argumnt:
1 | $.extend(m1) |
相当于
1 | $.extend($, m1); |
要么
1 | jQuery.extend(jQuery, m1); |
所以jQuery会被扩展。然后jQuery将在我上面的特定示例中包含两个附加属性:'a':'a'和'b','b'。所以$ .a会返回'a'。
有关更多信息,请参阅http://api.jquery.com/jQuery.extend/。