如果我创建一个jQuery包装集并将其放入console.log
,它将看起来像
我知道我们可以在显示console
或objects
时“欺骗”arrays
,这意味着我们有
var obj = {
0: 'some',
1: 'data'
};
它将输出为
但是,如果我们添加splice method
和length property
,它将变为
问题:我如何创建一个创建此类array-like object
的功能,但仍然在控制台中显示为function
jQuery
?我不明白jQuery代码。
结果:myFunction( "some", "data" )
更新
似乎我没有让自己清楚。我想知道,我如何创建和设置一个函数,一个构造函数,以及array-like object
在控制台中以function( elem1, elem2, ...)
打印的内容。一个完美的答案包含一个简单的例子。
答案 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
是只读的