$
それ自体が単なるユーザー定義オブジェクトではないのと同じように (それは基本的に関数であり、そのため()
演算子を使用でき、からすべての関数を継承します)いわゆるjQueryFunction.prototype
の実際の Javascriptは何ですか?物体?type
演算子を使用できるため、標準の配列のようなオブジェクトの1つである必要が[]
あります。これは、IE8の文字列に対しても実行できないことです(オブジェクトではできませんString
。ボックス化される前のリテラル)。
繰り返しますが、これはユーザー定義オブジェクトではありません (NB オブジェクトのようなものはありませんjQuery
。行のどこかに生の JavaScript で記述されています)。私はそれがa NodeList
(または持っていないブラウザでは同等)だと感じていますNodeList
。
これに気付いた理由は、Array
プロトタイプにメソッドを追加したためであり、jQuery によって検出された一連のノードに関数が存在しないことを発見したからです!
では、この低レベルの情報を私と共有するのに十分なほど jQuery に親しんでいる人はいますか? または、それが自分のものであることがわかるまで、jQuery オブジェクトをテストできる Javascript の配列のようなオブジェクトの短い完全なリストはありますか?
私がこれを尋ねる理由は、jQuery がオブジェクトに要素を追加するだけであると仮定するのではなく、インデックスをプロパティ名 (obj[0] = x;
つまり) として使用することです。これは、Chrome 開発ツールと Firebug がそれらを表示する方法のためです。
これは、配列、jQuery、および配列のようなオブジェクトを表示する開発ツールを示しており、jQuery が行っていることの背後には少なくともいくつかの魔法があることを示しています。
編集
ではありませんNodeList
。それが役に立ったら; Chrome で調べると、それ自体が(すべての jquery メソッドを持っている) と記述されているタイプjQuery.fn.jQuery.init[0]
であることがわかります。jQuery が何をどのように行っているかを説明してくれる人は誰でも大歓迎です。jQueryのソースを見ていきます。__proto__
Object[0]
画像に関しては、単にオーバーライドされたものではありません.toString()
。
$('').toString == Object.prototype.toString //true
$('').toString == Array.prototype.toString //false