Вам не нужно вообще использовать функцию для создания объекта, если вы просто хотите синглтон:
var instance = {
name: "foo",
method: function() {
// do something
}
};
, который создает объект со свойствами name
и method
.Вам не нужно добавлять их через инициализацию, как это, если вы не хотите, вы можете сделать это:
var instance = {};
instance.name = "foo";
instance.method = function() {
// do something
};
Я обычно использую функцию при определении синглтона или "класса" (на самом деле, функция конструктора), но это потому, что у меня есть кое-что о именованных функциях (функция, указанная выше для свойства method
, это anonymous , что означает, что мои инструменты могутмне не очень помогает - со стеками вызовов и т. д.).Поэтому я бы, вероятно, сделал это:
var instance = (function() {
var publicSymbols = {};
publicSymbols.name = "foo";
publicSymbols.method = instance_method;
function instance_method() {
// do something
}
return publicSymbols;
})();
... хотя я обычно использую более короткое имя для publicSymbols
(хотел быть достаточно ясным, что он сделал).Во-первых, это позволяет мне иметь действительно закрытые функции, которые могут использовать синглтон или «класс», которые никто не может видеть. Больше здесь. Но это выбор стиля;это может быть так же просто, как первые два примера выше.