你使用什么Javascript编程模式?

时间:2010-12-14 22:30:36

标签: javascript class design-patterns

我正在重新检查我的很多代码,并且我一直回到这个问题,“我应该将所有JS类基于哪种模式?”

一些示例模式: http://www.klauskomenda.com/code/javascript-programming-patterns/

我最终采用混合方式,具有基本的发布/订阅功能。我不使用原型或模块模式,我在构造函数中定义公共/私有属性/方法。

例如:

function ClassName(){
    var _privateVar = 'private';
    this.publicVar = 'public';
    function _privateMethod(){};
    this.publicMethod = function(){};
}

您经常在JS中使用哪些模式?出于什么目的?常规网站?完整的网络应用?是什么让你选择一种模式而不是另一种?

或者你认为它比我认为的重要吗?

提前致谢。

编辑:好吧,我确实使用原型,只是不定义我的所有方法。但是由于性能的原因,我倾向于这种方法?想法?

2 个答案:

答案 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");