jQuery的返回值是Array,但构造函数是Object。如何?



例如,

$(document) // [ #document ] : document object in array
typeof $(document) // "object"
$(document).constructor // function Object() { [native code] } or function (a,b) { return some function; }

如果值是数组,它必须是数组构造函数。

它不是一个类似对象的数组。 因为像对象一样的数组只有数组属性,而不是像 []。

怎么可能?

加:如果可以,请展示简单的示例代码。喜欢

a = ... 
console.log(a) // [ ... ]
console.log(a.constructor) // function Object or something

看看 jQuery 源代码。 $(document)创建文档元素的克隆 jQuery 对象,然后创建并返回一个类似数组的对象。

jQuery 工厂函数 $() 返回一个包含多个 jQuery 对象 数组的属性(长度,[] 数组访问运算符, 等),但与数组不完全相同,并且缺少一些 数组的内置方法(如 .pop() 和 .reverse())。

数组,如[],也是 JavaScript 中的一个对象。在JS中,大多数东西都是对象,例如函数,数组,文字对象,正则表达式...要真正知道您正在处理的内容是一个数组,您可以这样做:

Object.prototype.toString.apply(myarray) === '[object Array]'

相关内容

最新更新