2011-06-24 16 views
3

私はjQuery.fnがjQuery.prototypeのショートカットであるという印象を受けています。しかし、プラグインはjQueryのメソッドではありませんオブジェクト?なぜプロトタイプにメソッドを追加したいのですか?メソッドをプロトタイプに追加しないと、jQueryオブジェクトをコンストラクタとして使用して作成したオブジェクトにメソッドを渡します(jQueryオブジェクト自体にメソッドを追加するのではなく)。jQuery.fnを使用してプラグインを追加する理由

答えて

9

これはもう少し複雑です(または少なくともそう思われます)。あなたは

return new jQuery.fn.init(selector, context, rootjQuery); 

In addition we havejQuery.fn.init.prototype = jQuery.fnyou are actually calling

jQuery(selector)を呼び出すと

source code (jQuery 1.6.2)を見てみましょう。

jQuery.fnを拡張すると、jQuery.fn.init.prototypeも拡張されます。

我々は(jQuery()を呼び出すことによって)new jQuery.fn.initで作成するすべてのオブジェクトは、プロトタイプを参照を持っているとして、過去や未来に作成されたすべてのオブジェクトは、私たちがjQuery.fnに割り当てるすべてのメソッドにアクセスする必要があります。

私はこれがあなたの混乱を解消することを願っています。そうでない場合は、ただ質問してください:)

-4

jQueryのドキュメントはPlugins/Authoringです。

jQueryプラグインに新しいプラグインを追加する2種類の方法があります。$以外何か他のものを使用して、上書きをするプラグインを引き起こす可能性があるため

(function($){ 
    $.fn.myPlugin = function() { 

    // Do your awesome plugin stuff here 

    }; 
})(jQuery); 

(function($))は1未満に使用するよりも安全ですうまくいかない。

jQuery.fn.myPlugin = function() { 

    // Do your awesome plugin stuff here 

}; 
+0

はい私はそれを読んだが、何も私の質問に対処しませんでした。私はそれをする方法を完全に理解している、私はちょうど私たちがそれをやり遂げるべきである理由を理解していない。私はおそらく概念的に混乱しているでしょうが、私は何について知りたいのですか? – zjmiller

+0

プラグインを作成する機会は[more more](https://github.com/jquery-boilerplate/patterns/)です – yckart

関連する問題