少し背景...
SineMacula
フォーム要素を作成し、これらのフォーム要素をページ上で実行させるための多くのメソッドを格納するというオブジェクトがあります。
まず、ページが読み込まれるとsetFields()
、ページ上のすべてのフィールドをループして適切に設定するメソッドが呼び出されます。つまり、オートコンプリート、チェックボックスなど...
のコードはsetFields()
次のようになります。
/**
* Set Fields
* This function will set all fields
*
* The options:
* - fields: the fields selector to loop through
*
* @param object options The field options
*/
SineMacula.prototype.setFields = function (options){
// Set the defaults for the fields
var options = $.extend({
fields: '.field', // Define the default field selector
},options);
// Loop through the fields and set the events
$(options.fields).each(function(){
// Set the field events
SineMacula.setBlur($(this));
SineMacula.setFocus($(this));
SineMacula.setToggleLabel($(this));
// If the field is a checkbox then set it
if($(this).parent().hasClass('checkbox')){
SineMacula.setCheckbox($(this).parent());
}
// If the field is an autocomplete then set it
if($(this).parent().hasClass('autocomplete')){
SineMacula.setDropdown($(this).parent(),{source:$(this).attr('data-source')});
}
// etc...
});
};
上記のコードのほとんどは無視できますが、私が何をしているのかを正確に確認できるように、すべて挿入しました。
私の質問
、...SineMacula
など、オブジェクトのかなりの数のメソッドがあります。setCheckbox()
setDropdown()
私が知りたいのは、これらのメソッド自体をオブジェクトとして扱うべきですか?
したがって、私のコードは次のようになります。
if($(this).parent().hasClass('autocomplete')){
new SineMacula.dropdown($(this).parent(),{source:$(this).attr('data-source')});
}
new
メソッドを呼び出す前にキーワードに注意してくださいdropdown()
。
これは物事を処理するためのより良い方法ですか?使用するメモリなどは少なくなりますか?