为什么jQuery结果看起来像一个函数?

时间:2012-12-17 14:01:18

标签: javascript jquery arrays

如果我创建一个jQuery包装集并将其放入console.log,它将看起来像

enter image description here


我知道我们可以在显示consoleobjects时“欺骗”arrays,这意味着我们有

var obj = {
    0: 'some',
    1: 'data'
};

它将输出为

enter image description here

但是,如果我们添加splice methodlength property,它将变为

enter image description here


问题:我如何创建一个创建此类array-like object的功能,但仍然在控制台中显示为function jQuery?我不明白jQuery代码。

结果myFunction( "some", "data" )


更新

似乎我没有让自己清楚。我想知道,我如何创建和设置一个函数,一个构造函数,以及array-like object在控制台中以function( elem1, elem2, ...)打印的内容。一个完美的答案包含一个简单的例子。

3 个答案:

答案 0 :(得分:2)

firebug控制台中jQuery对象的默认外观是Object[one, two, ...]。 如果将array-like object与构造函数一起使用,则可以使用相同的内容。与乍得的回应一样。

但是在你的情况下,由于一个名为FireQuery的Firefox插件,你得到了jQuery对象的“特殊外观”:http://firequery.binaryage.com/

据我所知,你不能在firebug控制台中获得相同的结果。除非你制作自己的插件。

答案 1 :(得分:1)

您是否使用过console.dir()

>>> var myA = ["a","b","c"];  console.dir(myA);
  0    "a"
  1    "b"
  2    "c"

答案 2 :(得分:0)

如果它存在,它只输出Object.constructor.name的值:

>>> var Mine = function() {}
undefined

>>> new Mine()
Object {}

//-------------------------------

>>> function Mine() {}
undefined

>>> new Mine()
Mine {}

//-------------------------------

>>> function Mine() {}
undefined

>>> Mine.prototype.length = 10;
10

>>> Mine.prototype.splice = function() {}
function()

>>> new Mine()
Object[undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined]

这与我在控制台中为jQuery获得的输出相匹配:

>>> jQuery('span');
Object[span.profile-triangle, span.reputation-score, span, span.badge2, ...]

我使用的是Firefox v17.0.1和Firebug v1.11.1

希望这有帮助。

修改:还要注意,{i> 1

后,Function.name是只读的