一点背景...
我有一个名为的对象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()
这是一种更好的工作方法吗?会使用更少的内存等吗?