Я пишу библиотеку JavaScript, в которой я хочу, чтобы некоторые методы и свойства были общедоступными, а другие частными. Следующее кажется отличным способом сделать это, в то время как все упаковано в один объект.
(function (window) {
var Thing = function() {
// private var
var variable = "value";
return {
// public method
method:function() {
alert(variable);
}
}
}();
window.Thing = Thing;
})(window);
Thing.method();
Что здорово. (В основном, от здесь ).
Однако я все же хотел бы иметь возможность использовать конструктор Thing
для передачи некоторых аргументов.
В любом случае я могу предоставить конструктор в операторе возврата или использовать прототип для переопределения конструктора? Так что я могу позвонить:
Thing(stuff);
Прямо сейчас, если я попытаюсь это вызвать:
Uncaught TypeError: Property 'Thing' of object [object DOMWindow] is not a function
Это имеет смысл, поскольку оно не возвращает себя, но в идеале можно было бы вызвать конструктор.
ИЛИ, это просто baaaad, и я должен держаться подальше от некоторых или всего этого?