什么是jquery语句“var collection = jQuery([1]);”意思?

时间:2013-07-17 12:29:30

标签: jquery

“学习JavaScript设计模式”一书的第109页上,有一个让我困惑的代码示例。

jQuery.single = (function( o ){

    var collection = jQuery([1]);  // <-- i want to ask this line
    return function( element) {

         // give collection the element
         collection[0] = element;

         // return the collection
         return collection;
    }
})();

该功能的使用是这样的:

$('div').on('click', function() {
     var html = jQuery.single( this ).next().html();
     console.log( html );
});

更新 谢谢回答。我查看了作者页面76 bytes for faster jQuery

中的原始代码源代码
var collection = jQuery([1]); // Fill with 1 item, to make sure length === 1

现在我明白了。我希望“学习JavaScript设计模式”一书的作者在引用此代码示例时也可以添加此注释。

2 个答案:

答案 0 :(得分:6)

jQuery([1])只是将一个包含整数1的条目的数组传递给jQuery,它将返回包含所有jQuery原型方法的数组的包装器。

稍后将element参数变量分配到同一个数组中,然后返回整个jQuery实例。

从它的外观来看,整个函数只是将单个元素注入重用的 jQuery对象并返回它。

假设它可以加快速度,实际上当你计算数百万次迭代超过一秒钟时,但在我看来,这是一个明显的微优化案例,可以在长时间的调试时间内扼杀你。 - Perfection Kills

答案 1 :(得分:1)

您正在将预定义数组传递给jQuery()函数。 let [1]表示“只有1个元素的新数组”

你也可以像 -

那样写
var collection = jQuery(new Array(1)); // or even $(new Array(1));

我认为他们这样做的原因是因为数组中有多少元素没有任何混淆。