【发布时间】:2016-09-27 16:40:27
【问题描述】:
我已经看到了揭示模块模式以及原型类模式。我有点将两者一起改编成一个具有启发性的班级模式。我试图弄清楚这种模式是否存在任何问题,或者一些不起作用的东西。只要对象的构造函数是 typeof "function" 我认为不会有任何问题。
我能想到的唯一警告是一个大容量的实例化类,每次创建新类时都会创建私有函数。这可能会导致数千个实例的内存问题。但是,对于不在内存中建立的较大类,我的想法是更容易的代码可读性和安全性可能是有益的。通过保持函数的私密性和公开它们,混淆器将所有内部函数最小化,使得窥探变得困难。当然,这不是万无一失的,而只是额外的保护层。此外,能够在函数内部私下工作,消除了类中数百次出现的“this”。也许这是一个小优势,但对于复杂的代码,它提高了可读性。有人发现这种模式有什么重大问题吗?
//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;
};
【问题讨论】:
-
使用适合你的任何东西。没有绝对的。
-
查看Use of 'prototype' vs. 'this' in JavaScript? 和其他相关问题。
标签: javascript prototype javascript-objects javascript-framework revealing-module-pattern