Я видел раскрывающий шаблон модуля, а также образец класса прототипов. Я как бы адаптировал их вместе в раскрывающийся класс. Я пытаюсь выяснить, есть ли какие-либо ошибки с этим шаблоном или что-то, что не сработает. Пока конструктор для объекта является «функцией», я бы подумал, что никаких проблем не возникнет.Выявление класса шаблона против прототипа?
Единственное предостережение, которое я могу придумать, - это класс экземпляров с высоким объемом, где частные функции получают создание каждый раз, когда создается новый класс. Это может вызвать проблемы памяти для тысяч экземпляров. Однако для больших классов, которые не растут в памяти, мое мышление - это более простая читаемость кода и безопасность, которые могут принести пользу. Сохраняя функции закрытыми и открывая их, обфускатор сводит к минимуму все внутренние функции, что затрудняет поиск любопытных глаз. Конечно, это не надежный, а просто дополнительный уровень защиты. Кроме того, будучи в состоянии работать внутри функции в частном порядке, удаляет сотни вхождений «этого» внутри класса. Возможно, это небольшое преимущество, но для сложного кода это улучшает читаемость. Кто-нибудь видит серьезные проблемы с шаблоном?
//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;
};
Использование любых работ * для вас *. Абсолютов нет. – zerkms
См. [Использование прототипа vs. «this» в JavaScript?] (Http://stackoverflow.com/q/310870/218196) и другие связанные вопросы. –