3

私は独学で、現在 jQuery プラグインに取り組んでいます。

ページ上の要素を反復処理するために $(this) をグローバル変数 'obj' に割り当てるボイラー プレートを発見しました。

var obj = $(this);

結果として、私の関数ではどちらか$(obj).someFunc()またはobj.someFunc()両方の作業を使用できますが、正直なところ、違いが何であるかがよくわかりません。

質問があります.両方の方法のパフォーマンスの違い/利点は何ですか?どちらを使用する必要がありますか?

4

4 に答える 4

3

objがすでに jQuery オブジェクトである場合 (そうする場合)、再度jQueryvar obj = $(this);に渡す必要はありません。

$(obj)は と同じで$($(this))、明らかに冗長です。

jQueryのドキュメント[docs]を見ると、 jQuery(エイリアス$)に何を渡すことができるかを理解するのにも役立ちます。

  • jQuery( selector [, context ] )
  • jQuery( element )
  • jQuery( elementArray )
  • jQuery( object )
  • jQuery( jQuery object )
  • jQuery()

jQuery オブジェクトを渡すことは完全に有効であることがわかりますが、渡されたオブジェクトが複製されます。これはおそらく意図したことではありません。


ただし、jQuery プラグイン メソッドでは、thisはすでに jQuery オブジェクトであるため、jQuery に渡す必要もないことに注意してください。

詳細はこちら: http://docs.jquery.com/Plugins/Authoring

于 2013-02-20T19:05:09.343 に答える
1

obj.someFunc()$(obj).someFunc()の両方が機能しsomeFunc、 が jQuery 関数である場合、がobjjQuery オブジェクトであることを意味します。

その場合$(obj)、単なる冗長な呼び出しです。

于 2013-02-20T19:05:28.203 に答える
0

var obj = $(this);

これは、Classのインスタンスを作成したようなもので、アクセスして使用できます。使用obj中は、次の方が優れています。

`$(obj)`

冗長な初期化です。これは、クラスの別のインスタンスを作成し、それに同じオブジェクトを割り当てるようなものです。ですから、それを使用することはありません。

于 2013-02-20T19:16:55.167 に答える
0

違いは非常に単純です。最初のケース$(obj).someFunc() では、毎回 $() を呼び出しています。2 番目のケースobj.someFunc()では、一度だけ呼び出して、その結果をobjという変数に格納しています。

于 2013-02-20T19:09:45.463 に答える