博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js面向对象编程:命名空间
阅读量:5308 次
发布时间:2019-06-14

本文共 1319 字,大约阅读时间需要 4 分钟。

    在其它语言中为了避免类和方法重名问题,都有一个类似命名空间的概念,在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();//调用实例方法	     }

转载于:https://www.cnblogs.com/mengfanrong/p/3948252.html

你可能感兴趣的文章
变量提升
查看>>
线性表可用顺序表或链表存储的优缺点
查看>>
在现有的mysql主从基础上,搭建mycat实现数据的读写分离
查看>>
[Flex] flex手机项目如何限制横竖屏?只允许横屏?
查看>>
tensorflow的graph和session
查看>>
JavaScript动画打开半透明提示层
查看>>
Mybatis生成resulteMap时的注意事项
查看>>
jquery-jqzoom 插件 用例
查看>>
1007. Maximum Subsequence Sum (25)
查看>>
iframe的父子层跨域 用了百度的postMessage()方法
查看>>
图片生成缩略图
查看>>
动态规划 例子与复杂度
查看>>
查看oracle数据库的连接数以及用户
查看>>
【数据结构】栈结构操作示例
查看>>
中建项目环境迁移说明
查看>>
三.野指针和free
查看>>
activemq5.14+zookeeper3.4.9实现高可用
查看>>
TCP/IP详解学习笔记(3)IP协议ARP协议和RARP协议
查看>>
简单【用户输入验证】
查看>>
python tkinter GUI绘制,以及点击更新显示图片
查看>>