0

Я видел раскрывающий шаблон модуля, а также образец класса прототипов. Я как бы адаптировал их вместе в раскрывающийся класс. Я пытаюсь выяснить, есть ли какие-либо ошибки с этим шаблоном или что-то, что не сработает. Пока конструктор для объекта является «функцией», я бы подумал, что никаких проблем не возникнет.Выявление класса шаблона против прототипа?

Единственное предостережение, которое я могу придумать, - это класс экземпляров с высоким объемом, где частные функции получают создание каждый раз, когда создается новый класс. Это может вызвать проблемы памяти для тысяч экземпляров. Однако для больших классов, которые не растут в памяти, мое мышление - это более простая читаемость кода и безопасность, которые могут принести пользу. Сохраняя функции закрытыми и открывая их, обфускатор сводит к минимуму все внутренние функции, что затрудняет поиск любопытных глаз. Конечно, это не надежный, а просто дополнительный уровень защиты. Кроме того, будучи в состоянии работать внутри функции в частном порядке, удаляет сотни вхождений «этого» внутри класса. Возможно, это небольшое преимущество, но для сложного кода это улучшает читаемость. Кто-нибудь видит серьезные проблемы с шаблоном?

//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; 
}; 
+0

Использование любых работ * для вас *. Абсолютов нет. – zerkms

+1

См. [Использование прототипа vs. «this» в JavaScript?] (Http://stackoverflow.com/q/310870/218196) и другие связанные вопросы. –

ответ

1

Я видел разоблачающий образец модуля, а также шаблон класса прототипа. Я как бы адаптировал их вместе в раскрывающийся класс.

Вы должны взглянуть на выявления рисунка прототипа, который действительно объединяет их, чтобы показать класс. То, что вы в настоящее время, скорее следует назвать «вскрытием шаблона экземпляра».

Никто не видит серьезных проблем с рисунком?

Вы уже заявили о главном предостережении, но если вы считаете целесообразным, пойдите для этого. Учитывая, что большинство классов не, созданный в очень больших томах, это уже не имеет никакого отношения.

Однако вы можете улучшить свой узор. Учитывая, что вы больше не используете прототип, нет оснований для его сохранения. Снимите оператор new, отбросьте с помощью ключевого слова this в конструкторе и верните литерал объекта. Voilá, у вас есть заводская функция !