andyLib----javascript常用工具库

        连开发带测试写了4天。。终于把 andyLib 版本升到了 v0.2,中间苦于对JS理解的偏差险些‘遇难’。。。 。
今天做完测试后(树的遍历)。。就想先把SDK中的API写到这里,以为以后做文档准备,暂时不提供SRC。。因为想等下一个 edition 在发布。。。。。
        andyLib v0.2目前主要包括一个Collection框架(其他一些’无组织‘的这里先不说,比如对字符串操作的StringBuffer类)

        Collection框架包括2个抽象类,4个实现类,这里简单说下结构。。。UML图就不发了。。
       
                       Collection
          ----------------|---------------
         |                     |                    |
HashTable           |                 Tree   
                       LinearType
                               |
            --------------|---------------
            |                  |                   |
         List           Stack         Queue
                                

         Collection为抽象类,提供集合通用方法
            int size()
            void removeAll()
        
          -------HashTable
                            void put(key,value)
                            object get(key)
                            List getListOfIndex()
                            object remove(key)
        

          ------Tree
                            TreeNode createTreeNode(name,value)
                            TreeNode getTreeNodeById(treeNode.id)
                            void setRoot(treeNode)

                   ------TreeNode是Tree的一个内部类
                                  TreeNode firstChild()
                                  TreeNode lastChild()
                                  TreeNode  appendChild(treeNode)
                                  属性:
                                      id 只读
                                      depth 只读
                                      parent 只读
                                      childNodes 只读
                                      nodeName 读写
                                      nodeValue  读写
                                     注:代码本身没有实现只读限制,但是如果改变只读属性,会产生错误
   
         -------LinearType是一个抽象类扩展了Collection, 加入了对线性结构的特殊操作
                      void  reverse()  反置集合元素
                      List/Stack/Queue   convert(type)  讲当前集合转换成除自己之外的其他线性结构

                    -------List
                                List(array) 重载构造(线性结构都有,后面不再说明) 
                                void add(object[,index]) 重载函数,如果index合法,会插入index之后,否则添加到最后
                                void addAll(array | list) 重载函数,可以添加一个array或者list
                                void addFirst(object) 插入list首位
                                object get(index[,mode]) 重载函数,如果mode为true,get函数返回指定索引元素, 并从list中删                                                                            除该元素,如果mode为false, 就只返回不删除(后面的mode相同)
                                object getFirst(mode)
                                object getLast(mode)
                                List subList(startIndex,endIndex,mode)
                                boolean contained(object,mode) 如果mode为true,进行严格比较
                                int getIndexOf(object,mode) mode含义同上
                                Array getArray()
                   
                   --------Stack
                              void push(object)
                              object pop()

                   --------Queue
                              void queueUp(object)
                              object toLeave()

                   树的测试代码。。
  var  tree  =   new  Tree();
    tree.setRoot(tree.createTreeNode(
" root " , 23432 ));
    
var  son  =  tree.createTreeNode( " Child " , 12 );
    
var  sson  =  tree.createTreeNode( " Child3 " , 15 );
    
var  ssson  =  tree.createTreeNode( " Child3 " , 23 );
    
var  sssson  =  tree.createTreeNode( " Child3 " , 34 );
    
var  ssssson  =  tree.createTreeNode( " Child3 " , 45 );
    son.appendChild(sson);
    sson.appendChild(ssson);
    ssson.appendChild(sssson);
    sssson.appendChild(ssssson);
    tree.root.appendChild(son);
    
    tree.root.appendChild(tree.createTreeNode(
" Child1 " , 13 ));
    tree.root.appendChild(tree.createTreeNode(
" Child2 " , 14 ));
   
    
var  root  =  tree.root;
    
function  dis(r) {
            
var b = " ";
            
for(var i=0;i<r.depth;i++)b += b;
            document.write(b
+"id="+r.id+":name="+r.nodeName+":value="+r.nodeValue+":depth="+r.depth+"<br>");
            
if(r.childNodes != null && r.childNodes.size()>0)
            
{
                
for(var i=0;i<r.childNodes.size();i++){
                    dis(r.childNodes.get(i));
                }

            }

    }

    dis(root);



显示结果如下:
 id=0:name=root:value=23432:depth=0
  id=1:name=Child:value=12:depth=1
    id=2:name=Child3:value=15:depth=2
        id=3:name=Child3:value=23:depth=3
                id=4:name=Child3:value=34:depth=4
                                id=5:name=Child3:value=45:depth=5
  id=6:name=Child1:value=13:depth=1
  id=7:name=Child2:value=14:depth=1




    眼睛很疼。。。。不写了。。。。。。有什么问题留言。在下一个VERSION会改。。。谢谢了。。。
滴眼药去了。。。。。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值