zoukankan      html  css  js  c++  java
  • javascript常用的小方法

    1、求阶乘

    1 function factorial(num){
    2     if(num<=1){
    3         return 1;
    4     }else{
    5         return num*arguments.callee(num-1);
    6     }
    7 }

    2、求随机数n到m之间的数,包含m和n

    1 function selectFrom(lowerValue,upperValue){
    2     return Math.floor(Math.random()*(upperValue-lowerValue+1)+lowerValue);
    3 }

    3、判断属性是存在与对象还是存在于原型中,True为原型中,False为对象中

    1 function hasPrototypeProperty(object,name){
    2     return !object.hasOwnProperty(name)&&(name in object);
    3 }

    4、用于检测是否为数组

    1 function isArry(value){
    2     return Object.prototype.toString.call(value)=="[object Array]";
    3 }

    5、用于检测是否为函数

    1 function isFunction(value){
    2     return Object.prototype.toString.call(value)=="[object Function]";
    3 }

    6、用于检测是否为正则表达式

    1 function isRegExp(value){
    2     return Object.prototype.toSource.call(value)=="[object RegExp]";
    3 }

    7、使用下面代码可以跨浏览器取得窗口左边和上边的位置

    1 var leftPos=(typeof window.screenLeft=="number")?window.screenLeft:window.scrollX;
    2 var topPos=(typeof window.screenTop=="number")?window.screenTop:window.scrollY;

    8、获取页面视口的大小

     1 var pageWidth=window.innerWidth,pageHeight=window.innerHeight;
     2 if(typeof pageWidth!="number"){
     3     if(document.compatMode=="CSS1Compat"){//判断是否属于标准模式
     4         pageWidth=document.documentElement.clientWidth;
     5         pageHeight=document.documentElement.clientHeight;
     6     }else{
     7         pageWidth=document.body.clientWidth;
     8         pageHeight=document.body.clientHeight;
     9     }
    10 }

     9、获取href参数数组

     1 function getQueryStringArgs(){
     2     //获取查询字符串并去掉开头的问号
     3     var qs=(location.search.length > 0 ? location.search.substring(1) : ""),
     4         //保存数据的对象
     5         args={},
     6         //取得每一项
     7         items=qs.length ? qs.split("&"):[],
     8         item=null,
     9         name=null,
    10         value=null,
    11         //在for循环中使用
    12         i= 0,
    13         len=items.length;
    14     for(i=0;i<len;i++){
    15         item=items[i].split("=");
    16         name=decodeURIComponent(item[0]);
    17         value=decodeURIComponent(item[1]);
    18         if(name.length){
    19             args[name]=value;
    20         }
    21     }
    22     return args;
    23 }

     10、将原型对象作为通用函数的参数,让通用函数返回创建的对象(每次创建完对象退出New函数作用域时,临时的new_函数对象会被自动释放。由于new_的prototype属性被设置为新的原型对象,其原来的原型对象和new_之间就已解开了引用链,临时函数及其原来的原型对象都会被正确回收了。)

     1 function New(aClass,aParams){//通用创建函数
     2     function new_(){ //定义临时的中转函数壳
     3         aClass.Create.apply(this,aParams); //调用原型中定义的构造函数,中转构造逻辑及构造函数
     4     };
     5     new_.prototype=aClass; //准备中转原型对象
     6     return new new_();  //返回建立最终建立的对象
     7 }
     8 var Person={ //定义的类
     9     Create:function(name,age){
    10         this.name=name;
    11         this.age=age;
    12     },
    13     SayHello:function(){
    14         alert("Hello,I'm "+this.name);
    15     },
    16     HowOld:function(){
    17         alert(this.name+" is "+this.age+" years old.");
    18     }
    19 };
    20 var BillGates=New(Person,["Bill Gates",53]); //调用通用函数创建对象,并以数组形式传递构造函数参数
    21 BillGates.SayHello();
    22 BillGates.HowOld();

     3、添加和移除处理程序

     1 var EventUtil={
     2     addHandler:function(element,type,handler){
     3         if(element.addEventListener){
     4             element.addEventListener(type,handler,false);
     5         }else if(element.attachEvent){
     6             element.attachEvent("on"+type,handler);
     7         }else{
     8             element["on"+type]=handler;
     9         }
    10     },
    11     getEvent:function(event){
    12         return event?event:window.event;
    13     },
    14     getTarget:function(event){
    15         return event.target||event.srcElement;
    16     },
    17     preventDefault:function(event){
    18       if(event.preventDefault){
    19           event.preventDefault();
    20       }else{
    21           event.returnValue=false;
    22       }
    23     },
    24     removeHandler:function(element,type,handler){
    25         if(element.removeEventListener){
    26             element.removeEventListener(type,handler,false);
    27         }else if(element.detachEvent){
    28             element.detachEvent("on"+type,handler);
    29         }else{
    30             element["on"+type]=null;
    31         }
    32     },
    33     stopPropagation:function(event){
    34         if(event.stopPropagation){
    35             event.stopPropagation();
    36         }else{
    37             event.cancelBubble=true;
    38         }
    39     }
    40 };
  • 相关阅读:
    【2018.05.05 C与C++基础】C++中的自动废料收集:概念与问题引入
    【2018.04.27 C与C++基础】关于switch-case及if-else的效率问题
    【2018.04.19 ROS机器人操作系统】机器人控制:运动规划、路径规划及轨迹规划简介之一
    March 11th, 2018 Week 11th Sunday
    March 10th, 2018 Week 10th Saturday
    March 09th, 2018 Week 10th Friday
    March 08th, 2018 Week 10th Thursday
    March 07th, 2018 Week 10th Wednesday
    ubantu之Git使用
    AMS分析 -- 启动过程
  • 原文地址:https://www.cnblogs.com/cmsdn/p/2790782.html
Copyright © 2011-2022 走看看