jQuery.fn.init
は、jQuery(".some-selector")
または$(".some-selector")
を呼び出すと実行される機能です。あなたはjquery.jsからこのスニペットでこれを見ることができます:
jQuery = window.jQuery = window.$ = function(selector, context) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init(selector, context);
}
ので、実際には、あなたが言及ラインはjQueryのjQueryのオブジェクトに機能を追加することができますどのようにするために重要である、jQueryの自体の内部とプラグインの両方から。これはjQuery.fn.whatever
介して追加機能を意味し、(最初のスニペットがコンストラクタとしてjQuery.fn.initを治療するための「新しい」使用しているため)この関数のプロトタイプとしてjQuery.fn
を割り当てることによって
jQuery.fn.init.prototype = jQuery.fn;
:これはラインでありますすべてのjQuery呼び出しによって返されたオブジェクトですぐに使用できます。
jQuery.fn.foo = function() { alert("foo!"); };
jQuery(".some-selector").foo();
あなたはあなたが実際に何をやっている最初の行に「jQuery.fn.foo」のことを追加して宣言する場合:だから例えば、簡単なjQueryプラグインが作成される可能性がありますし、このように使用
関数を2行目のようなjQuery関数で作成されたすべてのjQueryオブジェクトのプロトタイプに変換します。これにより、jQuery関数の結果に対して簡単に 'foo()'を呼び出し、プラグイン関数を呼び出すことができます。
要するに、この行がjQueryに存在しない場合、実装の詳細が変更された場合、jQueryプラグインの作成はより冗長で、将来の破損の対象となります。
f1()をinit.prototypeに追加してどういう意味が分かりませんか?それは何かに "何"を加えていない、それはプロトタイプを割り当てている。 –
私はもちろん「割り当て」を意味します。私の英語のために申し訳ありません。そして、なぜ、単にすべての機能をinit.prototypeに割り当てるのではないかという疑問がありますか? jQuery.prototypeに割り当てられた理由と、jQuery.prototype.init.prototypeに割り当てられたjQuery.prototypeより – NilColor
jQueryのデザインパターンに関する関連の質問:http://stackoverflow.com/q/12143590/1048572 – Bergi