$();
能在控制器里面看到返回的是一个数组[];
在jQuery源码当中 jQuery.fn.init 对象中有如下代码
// HANDLE: $(""), $(null), $(undefined), $(false)
if ( !selector ) {
console.log(this)
return this;
}
Query()是我模拟jQuery写的
我奇怪的是jQuery()返回的是一个像数组一样的[]
而我写的返回是一个Query.fn.init对象
所以想问下jQuery返回的[],是怎么样实现的
看上面这三段代码,可以了解$(...)返回的是一个
jQuery.fn.init
对象,jQuery.fn.init
是一个构造函数,其原型就是jQuery.fn
。再看看
jQuery.fn
的定义(精简代码)可以看到这是一个类似数组的对象,所以
$(...)
得到的是一个类数组对象,而不是真正的数组,用Array.isArray
很容易检查出来。它作为原型,提供了each
和map
等方法。如果要把它变成真正的数组,需要调用其
toArray()
方法