5

jQueryソースコードがどのように機能するかを調べています.jQueryオブジェクトがへの呼び出しを転送するだけであることを理解してjQuery.fn.initjQuery.fnますjQuery.prototype.

ソースコードには、次の行があります。

// Give the init function the jQuery prototype for later instantiation
jQuery.fn.init.prototype = jQuery.fn;

コードの機能を説明するコメントがありますが、まだ理解できません。

  1. このコード行の意味を誰か説明できますか? 後のインスタンス化について話しているのですが、なぜ init のプロトタイプを jquery のプロトタイプに設定する必要があるのでしょうか?

  2. jQueryソースコードがjQuery.prototypeを直接使用する代わりにjQuery.fnを使用している理由(競合や可読性などを回避するなど)はありますか?

4

1 に答える 1

2

(この回答は、プロトタイプ継承についてある程度理解していることを前提に書かれています。そうでない場合は、何が起こっているのかを完全に理解するために、それに関する記事を読む必要があります。Google で「プロトタイプ継承 JavaScript」を検索してみてください。)

新しい jQuery オブジェクトが内部で作成される場合、それは で作成されnew jQuery.fn.init()ます。initはコンストラクターであるため、このコンストラクターでプロパティを設定すると、prototype新しく作成された jQuery オブジェクトがこのプロトタイプのすべてのプロパティ ( のすべてのメソッドjQuery.fn) を継承できるようになります。

new jQuery()あなたが示唆しているように、単に使用された場合、オブジェクトはから継承されますjQuery.prototype 関数jQuery実行されます。関数のバゲージが付属していないため、代わりにコンストラクターが使用されます。と同じに設定すると、が可能になります。これは素晴らしいことです。これが、オブジェクトにプロトタイプがある理由です。initjQueryjQuery.prototypejQuery.fn.init.prototypejqueryobject instanceof jQueryjQuery

于 2012-11-18T14:20:21.953 に答える