12

Twitter Bootstrap のすべての jQuery プラグインは、プラグインの動作を制御するクラスを定義するという同じ基本パターンに従います。最後に、彼らはこれを行います:

$.fn.alert.Constructor = Alert

これは何をしているのですか?

これはプロトタイプコンストラクターを定義していると思いますが、大文字の C を使用しています。大文字と小文字は関係ありませんか? それ以上に、これが何をしているのか、プラグインによってどのように使用されているのか、私にはよくわかりません。

例として、アラート プラグインは次のとおりです: https://github.com/twitter/bootstrap/blob/master/js/bootstrap-alert.js

4

1 に答える 1

24

プロパティには特別な意味がないため、ここには魔法はありませんConstructor(大きな C)。これは単なる慣例です。

基本的に、機能を定義するためにクラスのような構造を使用しています

var Alert = function() {};
Alert.prototype.foo = function() {};

非クラスのようなインターフェイスを介して公開します。

$('#blurf').alert();

したがって、これは単に便利なプラグインの規則です。$.fn各 jQuery プラグインは、クロージャーを介して必要なコンストラクターにアクセスできるオブジェクトのプライマリ メソッドを定義します。しかし、コンストラクター自体はそのクロージャーに対してプライベートです。Assign it to$.fn.myplugin.Constructorは、そのコンストラクターを他のコードからアクセスできるようにするだけで、必要に応じて高度な制御が可能になります

var myAlert = new $.fn.alert.Constructor('Hello World'); // or something

代わりに、次のようなことができます。

$.fn.alert.Alert = Alert;

これは、主観的に、醜く冗長です。そして、コンストラクターにつながるプロパティ名を翻訳または推測する必要があります。各プラグインが 1 つのクラスで実装され、各クラス コンストラクターがその場所にあると言う場合、$.fn.myplugin.Constructor各プラグインの背後にあるクラスにアクセスするための一貫したインターフェイスが得られます。

繰り返しますが、これは単なる慣習であり、特別なことではありません。

于 2012-05-10T00:44:03.280 に答える