区別(function($){...})(jQuery)、$(function(){})、および$.fn

1956 ワード

一、(function($){...})(jQuery)
まずfunction(arg){...}匿名関数が定義されています.パラメータはargですが、呼び出すときは関数の後ろにカッコと実パラメータを書く必要があります.オペレータの優先度のため、関数自体にもカッコが必要です.
(function(arg){...})(param)
これはargのパラメータを定義し、paramをパラメータとしてこの匿名関数を呼び出すことに相当する.
(function($){...})(jQuery)は同じで、形参で$しか使わないのは、他のライブラリと衝突しないためなので、実参でjQueryを使うのは、実は
var fn = function($){...};
fn(jQuery);
は実際には理解できますが、fnは存在しません.関数は直接定義され、実行され、次のように圧縮されます.
(function($){...})(jQuery)
二、$(function(){})
$です.ready(function(){...})ページを読み込んで実行するコードを意味します.
jQuery(function(){...});
jQuery(document).ready(function(){...})
両者を比較すると、
jQuery(function(){...});操作DOMオブジェクトを格納するためのコードで、コードを実行するとDOMオブジェクトが既に存在します.jQueryオブジェクトが渡されず、外部がjQueryを通過するため、開発プラグインを格納するためのコードは使用できません.methodもそのメソッド(関数)を呼び出すことができません.
(function(){...}(jQuery);開発プラグインを格納するためのコードは、コードを実行する際にDOMが存在するとは限りませんので、DOM操作を直接自動的に実行するコードは、注意して使用してください.
簡単な理解は(function($){...})(jQuery)事前に定義する必要がある関数を定義するために使用されます
$(function(){...})これは、DOMロードが完了した後に、あらかじめ定義された関数を実行/実行するために使用されます.
jQueryプラグインを開発する場合、jQuery(function(){...})を先に見て、DOMロード完了後にready()メソッドが実行されたことを意味します.(jQuery).
三、$.fn
$.fnとは、jQueryのネーミングスペースを指し、fnのメソッドとプロパティを加えると、jqueryインスタンスごとに有効になります.
$を定義する.fn.initPageMe()は、jQueryに対してabcメソッドを拡張しているので、後でjQueryインスタンスごとにこのメソッドを参照することができます.
$.fn.initPageMe=function(opts){...};   //      
$(function(){
    $(".pageMe").initPageMe();             //      
})

四、$と$fn$はjQueryの表現形式である.jQueryの拡張方法は次のとおりです.
1.$.func1=function(){}
2.$.extend({func1:function(){}})
3.$.fn.func1=function(){}
4.$.fn.extent({func1:function(){}})
$拡張方法は静的方法であり、$直接呼び出しを用いることができ、その拡張方法は2種類あり、一般的に$を用いる.extend({});;$fn拡張の方法は実例の方法であり、「オブジェクト」$("")によって呼び出さなければならない.その拡張の方法は同様に2種類あり、一般的に$を用いる.fn.extend({ }).
ここで、fnはprototypeと同等に使用される.jQuery.fn = jQuery.prototype
参照:https://blog.csdn.net/felcon/article/details/52778324