我试图理解jQuery是如何编码的。
他们有一个对象:
jQuery.fn = {
//key value pairs
}
但是如果我在浏览器控制台中键入jQuery.fn
,它只返回[]
而不是对象本身。有谁知道为什么?
答案 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是原型