2

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

在此处输入图像描述


我知道我们可以“欺骗”console显示objectsor arrays,这意味着如果我们有

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

它将输出为

在此处输入图像描述

但是如果我们加上一个splice methodand length property,它就会变成

在此处输入图像描述


问题:我怎样才能创建一个函数,创建这样一个array-like object,但仍然function像一样在控制台中显示jQuery?我不明白 jQuery 代码。

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


更新:

好像我说得不够清楚。我想知道,如何创建和设置函数、构造函数,以及array-like object在控制台中打印为function( elem1, elem2, ...). 一个完美的答案包含一个简单的例子。

4

3 回答 3

2

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

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

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

于 2012-12-17T14:41:59.350 回答
1

你用过console.dir()

>>> var myA = ["a","b","c"];  console.dir(myA);
  0    "a"
  1    "b"
  2    "c"
于 2012-12-17T14:05:27.417 回答
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

希望这可以帮助。

编辑:另请注意,Function.name一旦创建函数,它就是只读的1

于 2012-12-17T14:32:12.120 回答