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

Why does jQuery.fn display [] in the console?

本文关键字:显示 控制台 jQuery fn 为什么      更新时间:2023-09-26

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

他们有一个对象:

jQuery.fn = {
     //key value pairs
}

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

jQuery.fn只是满足开发人员控制台类似数组的要求。它实际上不是一个Array实例*,但它有一个接口,可以将其视为数组。

*如果jQuery.fn实际上是一个数组,jQuery.fn instanceof Array的计算结果会true;它不是。不过,它确实复制了一些Array.prototype方法。


如果要检查对象是否实际上是Array,有两种方法,最简单的方法是obj instanceof Array,但是对于从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

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