首页 > 代码库 > js面向对象编程:命名空间
js面向对象编程:命名空间
在其他语言中为了避免类和方法重名问题,都有一个类似命名空间的概念,在js中实现类似的功能吗?
可以实现,主要是借助于js中对象的概念来实现,例如:
1 在命名空间中定义方法属性
var GiantCorp =GiantCorp||{}; GiantCorp.Common = { Test1:function(){alert("Test1")},//方法 Field1:"Field1"//属性 }; GiantCorp.ErrorCodes = { Test1:function(){alert("ErrorCodesTest1")},//方法 Field1:"ErrorCodesField1"//属性 };
调用方法:
//测试代码 function test(){ GiantCorp.Common.Test1(); alert(GiantCorp.Common.Field1); GiantCorp.ErrorCodes.Test1(); alert(GiantCorp.ErrorCodes.Field1); var Common= GiantCorp.Common;//类似于引入命名空间 Common.Test1(); alert(Common.Field1); }
2在命名空间中定义类
var GiantCorp =GiantCorp||{}; GiantCorp.obj=GiantCorp.obj||{}; GiantCorp.obj.Classobj =function(text1,text2){ //定义构造函数 this.text1=text1; this.text2=text2; } GiantCorp.obj.Classobj.prototype.Do =function(){ //定义实例方法 alert(this.text1+this.text2); }
调用方法:
//测试代码 function test(){ var obj=new GiantCorp.obj.Classobj("测试1","测试2"); obj.Do();//调用实例方法 var Classobj= GiantCorp.obj.Classobj;//引入命名空间 var obj2=new Classobj("测试1","测试2"); obj2.Do=function(text1,text2){ //重写实例方法 alert(this.text1); } obj2.Do();//调用实例方法 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。