Полагаю, вы знакомы с концепцией Java по именованию пакетов после того, как вы владеете доменом, что позволяет избежать коллизий с пакетами других поставщиков.Вы можете смоделировать пакеты Java (и избежать возможных коллизий naemspace) с помощью:
if (typeof(org) == "undefined")
org = {};
if (typeof(org.mydomain) == "undefined")
org.mydomain = {};
if (typeof(org.mydomain.mypackage) == "undefined")
org.mydomain.mypackage = {};
org.mydomain.mypackage.MyClass = function (newA) {
// constructor
this.a = newA;
}
org.mydomain.mypackage.MyClass.staticMethod = function () {
// static method
return "static";
}
org.mydomain.mypackage.MyClass.prototype.method = function () {
// normal method
return a;
}
var o = new org.mydomain.mypackage.MyClass(13);
console.log(o.method());
console.log(org.mydomain.mypackage.MyClass.staticMethod());
Вы можете даже смоделировать Java import
, если вы работаете в ограниченной области.(Выполнение этого в глобальном масштабе устранит весь смысл упаковки):
function afunc() {
var MyClass = org.mydomain.mypackage.MyClass;
var o = new MyClass(33);
console.log(o.method());
console.log(MyClass.staticMethod());
}
Самым слабым звеном здесь является корень нашего пространства имен, org
(или com
или любой домен верхнего уровня),Другой класс может использовать его по некоторым другим причинам.Использование org_mydomain
в качестве корня вместо org.mydomain
может обеспечить некоторую безопасность.
Редактировать:
У вас также есть другие возможности для имени root, если вы хотитеИзбегайте использования TLD в качестве корня.Если ваше доменное имя достаточно уникально (например, хип с ошибкой, например foogz.com ), вы можете предположить, что не будет другой компании, пишущей повторно используемые классы JavaScript, которые будут использовать foogz.org
или foogz.biz
так что, вероятно, вы будете единственным foogz там.:)
Другая возможность - добавить свой TLD к имени домена и использовать его для первого тега, например: mydomainorg.packagename.ClassName
.