我正在重新检查我的很多代码,并且我一直回到这个问题,“我应该将所有JS类基于哪种模式?”
一些示例模式: http://www.klauskomenda.com/code/javascript-programming-patterns/
我最终采用混合方式,具有基本的发布/订阅功能。我不使用原型或模块模式,我在构造函数中定义公共/私有属性/方法。
例如:
function ClassName(){
var _privateVar = 'private';
this.publicVar = 'public';
function _privateMethod(){};
this.publicMethod = function(){};
}
您经常在JS中使用哪些模式?出于什么目的?常规网站?完整的网络应用?是什么让你选择一种模式而不是另一种?
或者你认为它比我认为的重要吗?
提前致谢。
编辑:好吧,我确实使用原型,只是不定义我的所有方法。但是由于性能的原因,我倾向于这种方法?想法?
答案 0 :(得分:2)
需要考虑的一些事项
使用内部函数定义公共函数的成本更高,因为您为对象的每个实例化生成一个新函数。在原型上定义它使用方法的单个副本。
为了清晰起见,我总是使用下划线作为私有方法/属性。
我还使用模块模式在类中定义静态私有方法。由于它们不需要访问实例,因此只创建一次。
答案 1 :(得分:1)
我们在tinyHippos使用模块模式。
以下是我们就主题here
撰写的博客文章基本上你最终得到:
var nameSpace = {};
// class constructor
nameSpace.SomeClass = function (arg1, arg1) {
var _privateProperty = "foo";
function _privateMethod() {}
// return public methods
return {
publicProperty: "bar",
publicMethod: function publicMethod() { }
};
};
var obj = new nameSpace.SomeClass("arg1", "arg2");