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

Gau*_*han 3 javascript jquery

我试图了解jQuery是如何编码的.

他们有一个对象:

jQuery.fn = {
     //key value pairs
}
Run Code Online (Sandbox Code Playgroud)

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

zzz*_*Bov 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]';
}
Run Code Online (Sandbox Code Playgroud)

例:

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
Run Code Online (Sandbox Code Playgroud)