Ваш вопрос довольно широкий, поэтому я не думаю, что полный ответ здесь возможен.Но вот несколько моментов.
Относительно кода, который вы показали.Вы перепрыгиваете пару лишних обручей.
- Если вы не обращаетесь к DOM каким-либо образом, нет необходимости заключать код в
jQuery(document).ready()
- не нужно возвращать объект из самоназванной анонимной функции, если вы не закрываете некоторые частные функции или данные
Созданный вами объект может быть создан проще (хорошая вещь), как этот
var Page = {
form: {
//generate a new PDF
generatePDF: function () {
},
//Update the list of PDFs available for download
updatePDFDownloads: function () {
},
/*
* Field specific functionality
*/
field: {
//show the edit prompt
edit: function (id, name) {
},
//refresh the value of a field with the latest from the database
refresh: function (id) {
}
}
}
};
Легче читать и меньше сбивать с толку, только делать то, что вам что-то покупает.см. программирование грузового культа
Вот пример использования самозванной анонимной функции для создания закрытых членов
var Obj = (function() {
privateFunction( param ) {
// do something with param
}
var privateVar = 10;
return {
// publicMethod has access to privateFunction and privateVar
publicMethod: function() {
return privateFunction( privateVar );
}
}
})();
Структура, которую вы использовали, литералы объектов очень хороши,как вы говорите, при группировке множество функций (методов) и свойств.Это своего рода пространство имен.Это также способ создания Singleton .Вы также можете захотеть создать много объектов одного и того же класса.
JavaScript не имеет классов, подобных традиционным языкам ОО (я вернусь к этому), но на простейшем уровне очень просто создать «шаблон» для созданияобъекты определенного типа.Эти «шаблоны» являются обычными функциями, которые называются конструкторами.
// a constructor
// it creates a drink with a particular thirst quenchingness
function Drink( quenchingness ) {
this.quenchingness = quenchingness;
}
// all drinks created with the Drink constructor get the chill method
// which works on their own particular quenchingness
Drink.prototype.chill = function() {
this.quenchingness *= 2; //twice as thirst quenching
}
var orange = new Drink( 10 );
var beer = new Drink( 125 );
var i_will_have = ( orange.quenchingness > beer.quenchingness )
? orange
: beer; //beer
var beer2 = new Drink( 125 );
beer2.chill();
var i_will_have = ( beer2.quenchingness > beer.quenchingness )
? beer2
: beer; //beer2 - it's been chilled!
О конструкторах можно многое узнать.Вам придется искать вокруг.Существует множество примеров SO.
Наследование, основание OO, не настолько интуитивно понятно в js, потому что оно является прототипом.Я не буду вдаваться в подробности, потому что вы, скорее всего, не будете напрямую использовать нативную парадигму наследования прототипов js.
Это потому, что есть библиотеки, которые очень эффективно имитируют классическое наследование, Prototype (наследование) или mootools (класс) например. Там есть другие .
Многие говорят, что наследование чрезмерно используется в ОО и что вы должны отдать предпочтение композиции , и это подводит меня к тому, что я изначально намеревался рекомендовать, когда начинал этот бессвязный ответ.
Шаблоны проектирования в JavaScript так же полезны, как и на любом языке OO, и вам следует ознакомиться с ними
Я рекомендую вам прочитать Шаблоны проектирования Pro JavaScript .Вот и все