Каковы основные способы определения объектов многократного использования в Javascript? Я говорю, что можно использовать повторно, чтобы исключить методы singleton, такие как объявление переменной с литературой объектного литерала напрямую. Я где-то видел, что Крокфорд определяет четыре таких способа в своих книгах, но я бы предпочел не покупать книгу для этой короткой информации.
Вот как я знаком с:
-
Используя
this
, и построим с помощьюnew
(я думаю, это называется классическим?)function Foo() { var private = 3; this.add = function(bar) { return private + bar; } } var myFoo = new Foo();
-
Использование прототипов, похожих на
function Foo() { var private = 3; } Foo.prototype.add = function(bar) { /* can't access private, correct? */ }
-
Возврат литерала, не используя
this
илиnew
function Foo() { var private = 3; var add = function(bar) { return private + bar; } return { add: add }; } var myFoo = Foo();
Я могу относиться к относительно небольшим вариациям на них, которые, вероятно, не имеют никакого значения каким-либо значительным образом. Какие стили мне не хватает? Что еще более важно, каковы плюсы и минусы каждого из них? Есть ли рекомендация придерживаться, или это вопрос предпочтения и священная война?