Реализация пространства имен 
		
		
		
		Возникла идея реализовать на сайте что-то вроде пространства имен. 
	Но есть сомнения правильности кода с точки зрения [нормального] программирования. Допустим есть сайт app.ru, есть раздел продавца app.ru/seller/ есть раздел продавца со списком продуктов app.ru/seller/catalog/ Решено было сделать главный объект App в одном файле и объекты App.Seller для раздела app.ru/seller/ и App.Seller.Catalog для раздела app.ru/seller/catalog/, но, чтобы в этих объектах (свойствах App) объект App был доступен через this. Нормальна ли с точки зрения производительности и адекватности такая реализация? Код: 1. файл App.js (подключается на всем сайте) содержит основные действия для всего сайта: 
;(function($, window){
// ... какие-то действия
var AbstractApp = function() {
	this.module = module;
	this.app_type = app_type;
	this.action = action;
};
// функции доступные в наследниках типа App.Seller и App.Seller.Catalog через this
AbstractApp .prototype = {
	build_style : function() {
		// ... инициализация главного модуля
	}
	// .... и т.д.
}
// собственные свойства глобального App  ( не доступны в дочерних классах )
var App = {
	Init : function() { 
		//... 
		this.set_events ();
	},
	set_events : function() {
		// события для всего сайта
	}
	// ....
}
	// чтобы можно было обратиться из подключаемых файлов
	window.AbstractApp = AbstractApp;
	window.App = $.extend(new AbstractApp(), App);
})(jQuery, window);
$(document).ready(function(){
	// стартуем App
	App.Init();
});
2. файл App.Seller.js подключается в разделе app.ru/seller/ 
(function($, window) {
	
	window.App.Seller = $.extend(new AbstractApp(), {
		// собственные методы и свойства для раздела app.ru/seller/
		Init : function() {
			this.set_events();
		},
		set_events : function() {
			// события для раздела  app.ru/seller/
		},
	});
})(jQuery, window);
$(document).ready(function(){ // стартуем App.Seller App.Seller.Init(); }); 3. файл App.Seller.Catalog.js подключается в разделе app.ru/seller/catalog/ 
(function($, window) {
	
	window.App.Seller.Catalog = $.extend(new AbstractApp(), {
		// собственные методы и свойства для раздела app.ru/seller/catalog/
		Init : function() {
			this.set_events();
		},
		set_events : function() {
			// события для раздела  app.ru/seller/catalog/
		},
	});
})(jQuery, window);
$(document).ready(function(){
	// стартуем App.Seller.Catalog
	App.Seller.Catalog.Init();
});
Что получается: методы App.Seller и App.Seller.Catalog являются как-бы классами, и вроде получается что-то типа пространства имен. Или это не очень правильное решение?  | 
| Часовой пояс GMT +3, время: 16:59. |