[英]How do I group similar methods and variables together in an object oriented approach?
我在尋找這樣做的標准方式..這個職位在這里探索3種方式。 在這里 。 您應該以哪種方式用於通用案例......這是一個偏好問題。
例如,如果我使用實例化方式..我有兩行代碼而不是一行...我必須實例化對象...而不是調用方法...如果我使用靜態類型實現而不是不必實例化任何對象。 模塊模式的第三個選項......由於它是自動執行的,因此成本更高。
如果我必須給它們命名:
一般建議采用哪種方式,因此每次開始合並方法時我都不必討論這個問題。
以下是我想要整合的收集方法的示例。
/********************
group:checks
********************/
var patterns =
{
name: /^[a-zA-Z-\s]{1,20}$/,
email: /^[a-zA-Z0-9._(-)]+@[a-zA-Z0-9.(-)]+\.[a-zA-Z]{1,4}$/,
pass: /.{6,40}/,
url: /^[(-)\w&:\/\.=\?,#+]{1,}$/,
aml: /<(.+)_([a-z]){1}>$/
};
/*
- check_generic() - generic
*/
function check_generic(reg_ex_in,text,html_id,response)
{
if(!reg_ex_in.exec(text.value))
{
fill_id(html_id,response);
return 0;
}
return 1;
}
/*
- check_empty() - checks for empty text
*/
function check_empty(text,html_id,response)
{
for(var a=0;a<text.length;a++)
{
if(text[a].value==='')
{
fill_id(html_id,response);
return 0;
}
}
return 1;
}
/*
- check_same() - checks if two text entries are the same
*/
function check_same(text1,text2,html_id,response)
{
if((text1.value)!==(text2.value))
{
fill_id(html_id,response);return 0;
}
fill_id(html_id,'');
return 1;
}
這是我通常遵循的規則:
如果我將一組無狀態靜態函數組合在一起(實際上是命名它們),我會將它們粘貼在一個對象中:
var MyNamespace = {
patterns: {
name: /^[a-zA-Z-\s]{1,20}$/,
email: /^[a-zA-Z0-9._(-)]+@[a-zA-Z0-9.(-)]+\.[a-zA-Z]{1,4}$/,
pass: /.{6,40}/,
url: /^[(-)\w&:\/\.=\?,#+]{1,}$/,
aml: /<(.+)_([a-z]){1}>$/
},
check_generic: function(reg_ex_in,text,html_id,response)
{
if(!reg_ex_in.exec(text.value))
{
fill_id(html_id,response);
return 0;
}
return 1;
}
};
如果我想要一個有狀態的類實現而不關心訪問控制 ,我將使用實例化方法:
var MyClass = function(param) {
// initialize here
};
MyClass.prototype = {
// method definitions here
};
如果我正在做一些需要訪問控制的更復雜的東西,我將使用模塊模式:
var mod = (function() {
var o = {};
var _p = "myprivatestring";
o.p = "mypublicstring";
o.myfunc = function() {
this.p = _p;
};
return o;
})();
console.log(mod.p);
mod.myfunc();
console.log(mod.p);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.