gpt4 book ai didi

javascript - 如何在面向对象的方法中将相似的方法和变量组合在一起?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:50:29 26 4
gpt4 key购买 nike

我正在寻找执行此操作的标准方法..本帖here探索 3 种方式。 Here到。对于一般情况,您应该使用哪种方式……这是偏好问题吗?
例如,如果我使用实例化方式……那么我有两行代码而不是一行……我必须实例化对象……然后调用方法……如果我使用静态类型实现,则不必实例化任何对象。第三个选项模块模式......在公元前更昂贵。它是自动执行的。

如果我必须给它们命名:

  1. 对象 - 非静态
  2. 对象 - 静态
  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);

http://jsfiddle.net/dbrecht/WLN6Y/

关于javascript - 如何在面向对象的方法中将相似的方法和变量组合在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8130245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com