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

3

我想要了解jQuery的编码方式。

他们有一个对象:

jQuery.fn = {
     //key value pairs
}

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

1
相关链接:https://dev59.com/jW445IYBdhLWcg3wRoLH - zzzzBov
如果您想查看它的工作原理,请随意浏览未压缩的 jQuery源代码 - Cᴏʀʏ
有趣。我刚刚在Chrome控制台中输入了jQuery.isPlainObject(jQuery.fn),它返回了true,但是jQuery.isArray(jQuery.fn)返回false,尽管jQuery.fn被表示为[] - FishBasketGordo
2个回答

7

jQuery.fn只是满足开发人员控制台 类似于数组的要求。它实际上不是一个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

好的。现在如果控制台将其显示为数组,我该如何查看对象内部的方法? - Gautham Renganathan
我自己解决了。我只是删除了切片和长度属性 ;) - Gautham Renganathan

2
尝试在控制台中仅输入jQuery,jQuery.fn是它的原型。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接