js函数对象的总结

修改用字面量创建的对象的原型的方法;
var a = Object.create({a:1});
a.a //1

var p = Object.getPrototypeOf(a);
p.a = 2; //2
a.a //2

var man = {
      name:"bosn",
      weibo:"@bosn",
      $age:null,
      get age(){
        return new Date().getFullYear()-1988;
      },
      set age(val){
        this.$age = +val;
      }
  }

get set 中的函数体中的属性不能与函数名相同

setTimeout在使用的时候注意:在同一个函数里clearTimeout要在setTimeout之后执行才有效,因为clearTimeout在之前的话,虽然清除了循环,但之后又执行后面的setTimeout,又会进入另一个循环.

var a = {b:function(){return 5}} a.b() //5
var f = {get c(){return 8}} f.c //8

模拟Map()

function Map(){
    var args = arguments;
    var arr = [];
    if(args.length){
        for(var i=0;i<args[0].length;i++){
        arr[i] = args[0][i];
        }
    }
    this.get=function(x){
    for(i=0;i<arr.length;i++){
        if(arr[i]&&arr[i][0] === x){
            return arr[i][1];
        }
    }
    }
    this.set=function(x,y){
        var val = [x,y];
        for(i=0;i<arr.length;i++){
            if(arr[i]){
                if(arr[i][0] === x){
                    arr[i][1] = y;
                }else {
                    arr.push(val);
                }
            }
        }
        var setVal = [x,y];
        arr.push(setVal);
    }
    this.has = function(x){
        var flag = false;
        for(i=0;i<arr.length;i++){
            if(arr[i]&&arr[i][0] === x){
                flag = true;
                break;
            }
        }
        return flag;
    }
    this.delete = function(x){
        var flag = false;
        var num;
        for(i=0;i<arr.length;i++){
            if(arr[i]&&arr[i][0] === x){
                flag = true;
                num = i
                break;
            }
        }
        if(flag){
            delete arr[num];
            return true;
        }else {
            return flag;
        }
    }
}

测素数:

function ss(x){
    var x = parseInt(x);
    if(x === 1){return false;}
    for(var i=2;i<x;i++){
       if(x%i===0){
        return false;
        }     
    }
    return true;
}

添加事件处理程序封装对象

var eventUtil = {
      addHandler:function(element,type,handler){
          if(element.addEventListener){
              element.addEventListener(type,handler,false);
          }else if(element.attachEvent){
              element.attachEvent("on"+type,handler);
          }else {
              element["on"+type] = handler;
          }
      },
      removeHandler:function(element,type,handler){
          if(element.removeEventListener){
              element.removeEventListener(type,handler,false);
          }else if(element.dettachEvent){
              element.dettachEvent("on"+type,handler);
          }else {
              element["on"+type] = handler;
          }
      },
      getEvent:function(event){
          return event?event:window.event;
      },
      getType:function(event){
          return event.type;
      },
      getElement:function(event){
          return event.target||event.srcElement;
      },
      stopPropagation:function(event){
          if(event.stopPropagation){
              event.stopPropagation();
          }else{
              event.cancleBubble = true;
          }
      },
      preventDefault:function(event){
          if(event.preventDefault){
              event.preventDefault()
          }else{
              event.returnValue = false;
          }
      }
  }

getElementsByClassName替代:

function getEleByClass(className,parent){
      var oParent = parent?document.getElementById(parent):document;
      var elements = oParent.getElementsByTagName("*");
      var eles = [];
      for(var i=0,len=elements.length;i<len;i++){
          if(elements[i] === className){
              eles.push(elements[i]);
          }
      }
      return eles;
  }

冒泡排序

for(var i = 0;i<a.length-1;i++){
        for(var j = 0;j<a.length-1-i;j++){
            if(a[j]>a[j+1]){
                    a[j]+=a[j+1];
                a[j+1] = a[j]-a[j+1];
                a[j] -= a[j+1];
            }
        }
    }

等腰三角

for(var i = 0;i<5;i++){
      for(var j = 0,str = [];j<9;j++){
          str[str.length] = (j<4-i||j>=i+5)?" ":"*";
      }
      console.log(str.join(""));
  }

正三角

for(var i = 0;i<5;i++){
      for(var j = 0,str = [];j<i+1;j++){
          str.push("*");
      }
      console.log(str.join(""));
  }

另一边三角

for(var i = 0;i<5;i++){
      for(var j = 0,str = [];j<5;j++){
          str[str.length] = (j<4-i)?" ":"*";
      }
      console.log(str.join(""));
  }

indexOf遍历

index = -1
while(index= str.indexOf("",index+1)!=-1){}

index = str.length;
while(index = str.lastIndexOf("",index-1)!=-1){.....if(index<=0){break;}}

双色球

    var reds = [];
    var blue;
    var r;
    var flag;
    while(reds.length<6){
        flag = true;
        r = Math.floor(Math.random()*34);
        for(var i=0;i<reds.length;i++){
            if(reds[i]==r){
                flag = false;
                break;
            }
        }
        if(flag){reds.push(r);}
    }
    blue = Math.floor(Math.random()*34);
    console.log("红球 "+reds.join(" ")+" 蓝球 "+blue);

递归

var tabs = [];
function getChildren(parent){
    var children = parent.childNodes;
    if(children){
        tabs.push("\t");
        for(var i=0, len=children.length;i<len;i++){
            console.log(tabs.join("")+"|-"+(parent.nodeType != 3?parent.nodeName:parent.nodeValue));
            if(children[i].childNodes.length){
                arguments.callee(children[i]);
            }
        }
        tabs.pop();
    }
}
getChildren(document);

递归

var iterator =
document.createTreeWalker(document,NodeFilter.SHOW_ALL,null,false);
var node = null;
var blank = [];
while(node = iterator.nextNode()){
    console.log(blank.join("")+"|-"+(node.nodeType!=3?node.nodeName:node.nodeValue));
    if(node.childNodes.length){
        blank.push("\t");
    }else{
        var next = iterator.nextNode();
        if(next){
        while((node = node.parentNode)!==next.parentNode){
            blank.pop();
        }
        }else{
            break;
        }
        iterator.previousNode();
    }
}

documentElement?documentElement!==”HTML”:false;
documentElement&&documentElement!==”HTML”?true:false;
先检查documentElement是否存在,若存在再执行第一句

function isHTML(doc){
    return doc.createElement("p").nodeName === doc.createElement("P").nodeName
}

e.ownerDocument 获得元素的document

function fixContains(a,b){
    try{
        while(b = b.parentNode){
            if(b === a){
                return true;
            }
        }
        return false;
    }catch(e){
        return false;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值