ホームページ >ウェブフロントエンド >jsチュートリアル >jQuery.fn と jQuery.prototype_jquery の違いの概要

jQuery.fn と jQuery.prototype_jquery の違いの概要

WBOY
WBOYオリジナル
2016-05-16 17:20:381143ブラウズ

最近jQueryのソースコードを読んでいます。

ここで理解するのが難しいことに気づきました。

ここでの jQuery、jQuery.fn、jQuery,fn、init、jQuery、prototype は何を表しますか。

jQuery のソース コードがどのように定義されているかを見てみましょう:

コードをコピーします コードは次のとおりです。 :

(function( window, unknown ) {

var jQuery = (function() {
// jQuery オブジェクトを構築します
var jQuery = function( selector, context ) {
return new jQuery.fn.init( selector, context, rootjQuery );
}

// jQuery オブジェクト プロトタイプ
jQuery.fn = jQuery.prototype = {
constructor: jQuery ,
init: function( selector, context, rootjQuery ) {
// 何かをする
}
}// init 関数に jQuery を与えます。後のインスタンス化のためのプロトタイプ
jQuery.fn.init.prototype = jQuery.fn;

// コンテンツを最初のパラメーターにマージし、後続のほとんどの関数はこの関数を通じて拡張されます
// jQuery を通じて。 fn .extend によって拡張された関数のほとんどは、jQuery.extend によって拡張された同じ名前の関数を呼び出します。
jQuery.extend = jQuery.fn.extend = function() {};

// Expand static on jQuery Method
jQuery.extend({
// 何かすること
});

// この時点で、jQuery オブジェクトの構築が完了し、次のコードはjQuery または jQuery オブジェクトの場合 Extension
return jQuery;

window.jQuery = window.$ = jQuery;




コードをコピー

コードは次のとおりです:
var jQuery = function ( selector, context ) { return new jQuery.fn.init( selector, context, rootjQuery ); } jQuery 実際、jQuery.fn.init() は物体。それでは、jquery.fn.init() は何を返すのでしょうか?



コードをコピー

コードは次のとおりです。

はここから来ています。 , JavaScript オブジェクト。

ここで問題が発生しました。



コードをコピー


コードは次のとおりです。


コードをコピーします


コードは次のとおりです:
jQuery.fn.init.prototype = jQuery.fn; これを見て思いつきました。 jQuery.fn を jQuery.fn.init.prototype に与えるだけです。では、これ以前の jQuery.fn.init.prototype は何だったのでしょうか。
そうですよね?現時点では、そのプロトタイプは

であるため、init の外部でメソッドを呼び出すことができます。手続きをしただけです。

jQuery.fn.init.prototype に jQuery.fn を代入します。この場合、

jQuery.fn.init.prototype のプロトタイプ、つまり jQuery のプロトタイプ オブジェクトは jQuery です。 .fn (jQuery = function(return new jQuery.fn.init()) に注意してください)。

値を割り当てた後。呼び出す際、initにメソッドがない場合はプロトタイプ関数内で呼び出されます。

その場合。

次のようなことを考えるかもしれません:




コードをコピーします


コードは次のとおりです:
jQuery.extends() jQuery.fn.extends() これらの違いは理解しておいた方が良いと思います。
jQuery.extends() は jQuery を直接拡張し、jQuery.fn.extends() は明らかに拡張されたプロトタイプです。

これが、jQuery.fn.extends() のメソッドのほとんどが jQuery.extends() から派生した理由です。

ここでは、jQuery.fn が jQuery.fn.init.prototype に割り当てられています。

このような関係があります。




コピーcode


コードは次のとおりです。
jQuery.prototype = jQuery.fn = jQuery.fn.init.prototype
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。