如何把JS写成类

5 篇文章 0 订阅
5 篇文章 0 订阅

    mootools创建了一个dialog widget

       1. var Dialog = new Class({  
       2.     Implements: Events,  
       3.     initialize: function() {  
       4.     },  
       5.     show: function() {  
       6.         // ....  
       7.         this.fireEvent('show', this);  
       8.     }  
       9. });  
      10.   
      11. var dialog = new Dialog();  
      12. dialog.addEvent('show', function() {  
      13.     // ....  
      14. });  
     

     

    -----------------------------------------------------------------------------------

    方法一:

    if (!window.testClass)   
    {   
    testClass =    
        {   
         data:null,    //类的属性
            init: function()    //类的方法
            {    
                this.data=456;   
                alert("init")   
            },  // 注意逗号   
            show: function()   //类的方法 
            {              
                alert("show:"+this.data)   
            }   
        }   
    }
    调用方法:
    testClass是类名
    testClass.init();
    testClass.show();

     

     

     

    方法二:

     

    //
    //取得 指定元素的 子元素(特定) 											//
    //子元素可以指定 name 													//
    //子元素可以指定 tagName 												//
    //返回集合 (指定name或tagName的子元素集合) 								//
    //
    
    function Child_class(){
    	this.list_elment=new Array();
    	//取得指定元素的所有子元素中元素名为name的元素集合 (有name取name,无name取id )
    	this.getChildsByName=function(element,name){
    		var state="name";
    		return this.getChilds(element,name,state);
    	};
    	//取得指定元素的所有子元素中tagName为name的元素集合 
    	this.getChildsByTagName=function(element,name){
    		var state="tagName";
    		return this.getChilds(element,name,state);
    	};
    	//state为"name",取得 指定元素的 name为name子元素
    	//state为"tagName",取得 指定元素的 tagName为name子元素
    	this.getChilds=function(element,name,state){
    		this.find(element,name,state);
    		return  this.list_elment;  //返回集合
    	};
    	//通用方法	
    	this.find=function (element,name,state){
    		if(null==element){return ;}
    		var nodes=element.childNodes;  //所有子元素
    		for(var i=0;i<nodes.length;i++){
    			if(nodes[i].nodeType==1){ //节点类型为1			
    				var name_id="";
    				if(state=="name"){
    					name_id=nodes[i].name==null?nodes[i].id:nodes[i].name;  //有name取name,无name取id 
    				}else  if (state=="tagName"){
    					name_id=nodes[i].tagName;  
    				}else{
    					alert("请传参数,指定按name或tagName搜索元素!");return ;
    				}				
    				if(name_id==name){
    					this.list_elment.push(nodes[i]);  //加入集合
    				}				
    				var bl=nodes[i].hasChildNodes(); //有无下一层子元素
    				if(bl){
    					this.find(nodes[i],name,state);  //递归			
    				}								
    			}							 
    		}
    	};
    }
    
    
    //调用方法如下:
    //var c=new Child_class();
    //var oForm=document.getElementById('oForm');
    //var rs=c.getChildsByName(oForm,"m");
    //alert(rs.toString());

     

    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值