js函数对象的总结

来源:互联网 发布:linux退出vi编辑命令 编辑:程序博客网 时间:2024/06/01 09:15

修改用字面量创建的对象的原型的方法;
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 = -1while(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
原创粉丝点击