我正在建立一个" custom" javascript库用于跨不同的项目。该库将以增量方式构建,即新类(函数)将在需要时添加。
我面临的问题是确保我的功能名称不会与其他开发人员的功能名称冲突。我已经想到了以下几个选项,并希望社区能够找到各自的优缺点。请注意,每个选项都将使用原型模式来定义类。
选项1:
示例:
Mycompany.Dept.Js.Class = function()
{
this.Member1 = 3;
}
MyCompany.Dept.Js.ClassA.prototype.PerformOperation = function()
{
return this.Member1;
}
MyCompany.Dept.Js.ClassB = function()
{
this.Member1 = "Test";
}
MyCompany.Dept.Js.ClassB.prototype.GetValue = function(){ return this.Member1;}
用法:
var obj1 = new MyCompany.Dept.Js.ClassA();
obj1.PerformOperation();
var obj2 = new MyCompany.Dept.Js.ClassA();
obj2.GetValue();
问题:我必须使用完整的类名来定义我的对象。
选项2:模块模式。
var MyCompany.Dept.Js = function() //IIFE
{
var ClassA = function()
{
this.Member1 = 33;
}`
var ClassB = function()
{
this.Member1 = "Test";
}
ClassA.prototype.PerformOperation = function(){//do something;}
ClassB.prototype.GetValue = function(){//do something;}
return {
BuildObject:function(type)
{
if(type=="ClassA") return new ClassA();
if (type == "ClassB") return new ClassB();
}
}
}();
用法:
var obj1 = MyCompany.Dept.Js.BuildObject("ClassA");
var obj2 = MyCompany.Dept.Js.BuildObject("ClassB");
obj1.PerformOperation();
obj2.GetValue();
问题:
你认为方法#2有什么问题吗?有什么缺点?还有其他技术吗?