Цели ...
- Удалите переменные, объекты и т. Д. Из глобального объекта.
- Убрать возможность столкновения.
Сначала я реализую код пространства имен Yahoo (обратите внимание, для примера, я использую ROOT в качестве корня моего пространства имен) ...
if (typeof ROOT == "undefined" || !ROOT) {
var ROOT = {};
}
ROOT.namespace = function () {
var a = arguments,
o = null,
i, j, d;
for (i = 0; i < a.length; i = i + 1) {
d = ("" + a[i]).split(".");
o = ROOT;
for (j = (d[0] == "ROOT") ? 1 : 0; j < d.length; j = j + 1) {
o[d[j]] = o[d[j]] || {};
o = o[d[j]];
}
}
return o;
}
Теперь я объявляю свое первое пространство имен ...
ROOT.namespace("UI");
ROOT.UI = {
utc: 12345,
getUtc: function() {
return this.utc;
}
}
То, что я хочу сделать здесь, - это хранить переменные, которые мне нужны для моего пользовательского интерфейса (в данном случае текущего времени в UTC), чтобы они не были в глобальном объекте. Я также хочу предоставить некоторые конкретные функции. Это должно быть доступно на каждой странице без каких-либо примеров ...
Теперь я хочу, чтобы объект хранился в моей структуре пространства имен. Однако этот объект нужно будет создать несколько раз. Цель здесь - сохранить это внутри моей структуры, но позволить создавать ее столько раз, сколько мне нужно. Это выглядит следующим образом:
ROOT.namespace("AirportFinder");
ROOT.AirportFinder = function(){
this.var1 = 99999;
this.Display = function() {
alert(this.var1);
}
}
И это пример кода для создания экземпляра объекта ...
var test1 = new ROOT.AirportFinder();
test1.Display();
Это хороший шаблон?