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
以及其他方法。相关:。