为什么jQuery.fn在控制台中显示[]?

时间:2012-04-11 14:10:54

标签: javascript jquery

我试图理解jQuery是如何编码的。

他们有一个对象:

jQuery.fn = {
     //key value pairs
}

但是如果我在浏览器控制台中键入jQuery.fn,它只返回[]而不是对象本身。有谁知道为什么?

2 个答案:

答案 0 :(得分:7)

jQuery.fn完全符合array-like for the developer consoles的要求。它实际上不是Array实例*,但它有一个接口可以被视为一个数组。

*如果jQuery.fn 实际一个数组,jQuery.fn instanceof Array将评估为true;它没有。它 复制了一些Array.prototype方法。


如果要检查某个对象实际上是否为Array,则有两种方法,最简单的是obj instanceof Array,但对于从Array继承的对象,这将是正确的。如果要检查对象是否为数组,但需要排除继承自Array的对象,则应使用:

function isArray(arg) {
    return Object.prototype.toString.call(arg) === '[object Array]';
}

示例:

var a, b;
function Foo() {}
Foo.prototype = [];
a = new Foo();
b = [];
a instanceof Array; //true
b instanceof Array; //true
isArray(a);         //false
isArray(b);         //true

答案 1 :(得分:2)

尝试在控制台中只键入jQuery,jQuery.fn是原型