Возникла идея реализовать на сайте что-то вроде пространства имен.
Но есть сомнения правильности кода с точки зрения [нормального] программирования.
Допустим есть сайт 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 являются как-бы классами, и вроде получается что-то типа пространства имен.
Или это не очень правильное решение?