在console.log中调用时,jQuery实例如何显示为数组?

当进入JavaScript控制台时,jQuery对象显示为数组。 但是,它仍然是jQuery对象的一个​​实例。

var j = jQuery(); => [] console.log(j); => [] console.log('test with string concat: ' + j); => test with string concat: [object Object] j instanceof Array => false j instanceof jQuery => true 

怎么可以用自己的对象复制它?

———编辑———

感谢ZER0搞清楚。 下面是一些示例代码,用于创建一个与控制台中的jQuery类似的对象:

 var Foo = function() { this.splice = Array.prototype.splice; Array.prototype.push.apply(this, arguments); return this; } var f = new Foo(); => [] console.log(f); => [] console.log('test with string concat: ' + f); => test with string concat: [object Object] f instanceof Array => false f instanceof Foo => true 

很酷。

我相信他们有类似的东西:

 // Adding items to an object like an Array: var myObject = {splice : Array.prototype.splice}; Array.prototype.push.call(myObject, 1, 10, "foo"); // Getting items from an object like an Array: alert(Array.prototype.slice.call(myObject, 0)); console.log(myObject); alert(myObject); 

控制台使它看起来像一个数组,因为它具有类似于数组的属性。 它有长度和n个键使用整数。

当你调用jQuery()你没有向函数传递任何参数,所以它返回一个空对象。 当您将选择器作为参数传递时,它会创建与选择器匹配的元素的对象

它返回一个空数组,因为它什么都没做 – 受影响的元素数组。

适当的检查方法是

 console.log(jQuery); 

如果你愿意的话

 console.log(jQuery('div')); 

你会看到它返回元素数组。

我认为你想要看到的是你对象的属性。 如果是这种情况,当您将对象附加到另一个字符串时,您无意中将对象转换为字符串。 使用,运算符而不是+来显示对象属性而不是对象的“字符串化”版本:

 console.log('test with string concat: ', j);