6

这个小 jQuery 插件:

jQuery.fn.reverse = [].reverse;

它是如何工作的?对象绑定在哪里 - 数组原型反转功能?我真的不明白它在幕后是如何运作的。一些解释会很好。问候

4

2 回答 2

13

[].reverse.reverse()来自Array原型的函数。jQuery 正在利用这一点而不是定义自己的。

[]创建一个空数组,从中引用.reverse函数是完全有效的。

所以现在,在 jQuery 中,$.reverse()如果 jQuery 对象包含一组元素,就可以做到这一点。

于 2013-04-03T07:58:22.600 回答
5

jQuery.fn是 的别名jQuery.prototype

所以这个插件将 Array 的reverse函数添加到使用 . 创建的所有对象中new JQuery(),使用 . 构建的集合就是这种情况$

它之所以有效,是因为该reverse函数的规范使其适用于任何具有长度和索引属性的对象。您可以使用以下方法对其进行测试:

var a = {0:'a', 1:'b'};
a.length = 2;
console.log([].reverse.call(a)); // it works
于 2013-04-03T07:59:51.880 回答