Javascript $(';h1';)如何作为jQuery中的数组记录到web控制台?

Javascript $(';h1';)如何作为jQuery中的数组记录到web控制台?,javascript,jquery,logging,browser,console,Javascript,Jquery,Logging,Browser,Console,如果在浏览器中执行console.log($('some selector')),它将返回类似于数组的内容(第一行): 但请注意,它不是数组的实例,但实际上是 执行console.dir($('h1'))时,它显示它实际上是jQuery对象 问题是,他们如何让它看起来像web控制台中的一个数组?我注意到,在jQuery源代码中,它们添加了对一些数组和对象方法的引用,并向jQuery对象添加了toArray(以及slice和其他方法)。web控制台是否以某种方式检查这些方法,如果找到一个(toA

如果在浏览器中执行
console.log($('some selector'))
,它将返回类似于数组的内容(第一行):

但请注意,它不是数组的
实例,但实际上是

执行
console.dir($('h1'))
时,它显示它实际上是jQuery对象

问题是,他们如何让它看起来像web控制台中的一个数组?我注意到,在jQuery源代码中,它们添加了对一些数组和对象方法的引用,并向
jQuery
对象添加了
toArray
(以及slice和其他方法)。web控制台是否以某种方式检查这些方法,如果找到一个(
toArray
indexOf
slice
,等等),它会将其打印为数组?我想从任何自定义对象(如
Ember.ArrayProxy
)中获取此行为。当前,当您记录
Ember.ArrayProxy
时,它会显示
>对象
或其他任何内容,但最好将其显示为数组


有什么想法吗?

使用原型让对象继承
数组
,如下所示:

function SomeType() {
    this.push(16);
}

SomeType.prototype = [];
SomeType.prototype.constructor = SomeType; // Make sure there are no unexpected results

console.log(new SomeType()); // Displays in console as [16]

当然,所有jQuery对象都是
jQuery
函数/构造函数的实例,所以jQuery就是这样做的。作为奖励,由于继承,您可以从
数组
中获得所有方法,以及随之而来的索引

很好!我刚刚做了一些其他的测试,如果你这样做:
varx={length:0,splice:Array.prototype.splice}
,那么
x
看起来就像一个数组。奇怪。。。它特别需要它看起来像的那两个属性。@LancePollard:很有趣,似乎也可以跨浏览器工作!虽然继承方法的优点是
newsometype()instanceof Array
true
.P.S。你才14岁,铁杆!:)Derek:我只是用PHP阅读了
Referer
标题,并去掉了
?add
参数,同时跟踪会话。不要告诉任何人:)@minitech我不认为jQuery真的继承了阵列原型,它实现了
length
splice
以及其他方法。相关:。