揭示类模式与原型方法?

时间:2016-05-29 22:49:25

标签: javascript prototype javascript-objects javascript-framework revealing-module-pattern

我已经看到了揭示模块模式,以及原型类模式。我把两者结合起来,变成了一种暴露的阶级模式。我试图弄清楚这种模式是否存在任何问题,或者无法解决的问题。只要对象的构造函数是typeof" function"我认为不会有任何问题。

我能想到的唯一警告是高容量实例化类,每次创建新类时私有函数都会被创建。这可能会导致数千个实例化的内存问题。但是,对于不会在内存中构建的较大类,我的想法是代码可读性更容易,安全性可能会带来好处。通过保持功能私密并揭示它们,混淆器最大限度地减少了所有内部功能,使得难以窥探眼睛。当然,它并非万无一失,而只是一层额外的保护。此外,能够私下在函数内部工作,删除了数百次"这个"在课堂上。也许这是一个小优势,但对于复杂的代码,它可以提高可读性。有人看到这种模式有任何重大问题吗?

//standard pattern

var MyClass = function() {
    this.func1 = function() {
        //dostuff
    };
};
MyClass.prototype.func2 = function() {
    this.func1();
    //dostuff
};

-

//revealing class pattern

var MyClass = function() {
    function privateFunc() {
        //dostuff
    }

    function publicFunc() {
        privateFunc();
        //dostuff
    }

    this.publicFunc = publicFunc;
};

1 个答案:

答案 0 :(得分:1)

  

我已经看到了揭示模块模式,以及原型类模式。我把两者结合起来,形成了一种暴露的阶级模式。

你应该看看揭示原型模式,它真正将它们结合起来以揭示一个类。你现在所拥有的应该被称为“揭示实例模式”。

  

有人看到这种模式有任何重大问题吗?

你已经说过了重要的警告,但如果你认为值得,那就去吧。鉴于大多数类在非常大的卷中实例化,这实际上不再有任何区别。

但是,您可以改善您的模式。鉴于您不再使用原型,没有理由保留原型。删除new运算符,使用构造函数中的this关键字删除,然后返回一个对象文字。 Voilá,你有一个工厂功能