3

jQueryがどのようにコーディングされているかを理解しようとしています。

彼らはオブジェクトを持っています:

jQuery.fn = {
     //key value pairs
}

しかし、ブラウザコンソールに入力すると、オブジェクト自体ではなく、jQuery.fn単に返されます。[]誰かが理由を知っていますか?

4

2 に答える 2

7

jQuery.fn開発者コンソールのアレイのような要件を単に満たしています。実際にはArrayインスタンス*ではありませんが、配列として扱うことができるインターフェースを備えています。

*実際jQuery.fnに配列の場合、 ;と評価されます。そうではありません。ただし、一部のメソッドコピーされます。jQuery.fn instanceof ArraytrueArray.prototype


オブジェクトが実際にArrayであるかどうかを確認する場合は、2つの方法があります。最も単純な方法はですが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
于 2012-04-11T14:19:04.457 に答える
2

コンソールにjQueryのみを入力してみてください。jQuery.fnはプロトタイプです。

于 2012-04-11T14:16:55.533 に答える