• 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();//调用实例方法
    	     }




  • 相关阅读:
    七层协议和四层协议
    eclipse 在jboss的debug配置(ubuntu系统)
    Maven三种仓库的配置
    oracle触发器使用
    为什么要进行URL编码
    LevelDB Compaction原理
    使用python处理selenium中的窗口切换问题
    使用python处理selenium中的鼠标悬停问题
    测试模型
    jenkins for mac
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/3948252.html
Copyright © 2020-2023  润新知