jQuery のドキュメントによると、「すべての jQuery オブジェクトが作成されるわけではありません ===」。
「この「ラッピング」動作に関する重要な詳細は、ラップされた各オブジェクトが一意であることです。これは、オブジェクトが同じセレクターで作成された場合や、まったく同じ DOM 要素への参照が含まれている場合でも当てはまります。」
これを回避する方法はわかっていますが、なぜそうなるのでしょうか。これは、JavaScript が動作する特定の方法ですか?
jQuery のドキュメントによると、「すべての jQuery オブジェクトが作成されるわけではありません ===」。
「この「ラッピング」動作に関する重要な詳細は、ラップされた各オブジェクトが一意であることです。これは、オブジェクトが同じセレクターで作成された場合や、まったく同じ DOM 要素への参照が含まれている場合でも当てはまります。」
これを回避する方法はわかっていますが、なぜそうなるのでしょうか。これは、JavaScript が動作する特定の方法ですか?
はい。JS のすべてのオブジェクトは一意であり、とが同じオブジェクトへのポインターでない限り、それはo1 === o2
当てはまりません。o1
o2
{ foo: 1 } === { foo: 1 }; // false
したがって、jQuery オブジェクトは単純に次の同じ規則に従います。
var jq1 = $('.foo');
var jq2 = $('.foo');
jq1 === jq2; // false
唯一の例外は、実際に同じ jQuery オブジェクトを指す変数がある場合です。
var jq3 = jq1;
jq3 === jq1; // true