zoukankan      html  css  js  c++  java
  • js-高级技术

    高级技术:

    1、function Person(name,age,job){

          this.name=name;

          this.age=age;

          this.job=job;

    }

    var person=new Person("zhng",20,"zzzz");

    var person=Person("zhng",20,"zzzz"); ---this指的是window对象

    2、在使用大量if条件语句的时候:

    function createXHR(){

          if(typeOf XMLHttpRequest != "undefined"){

               createXHR=function(){

                     return new XMLHttpRequest();

               };

          }else if(typeOf ActiveXObject !=undefined){

               createXHR=function(){

                     if(typeOf arguments.callee.activeXString !="string"){

                          var version=["MSXML2.XMLHttp.6.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp"],

                              i,len;

                          for(i=0,len=versions.length;i<len;i++){

                                try{

                                      new ActiveXObject(versions[i]);

                                      arguments.callee.activeXString=versions[i];

                                      break;

                                }catch(ex){

                                      //skip

                                }

                          }

                     }

                     return new ActiveXObject(arguments.callee.activeXString);

               };

          }else{

               createXHR=function(){

                     throw new Error("NO XHR object available.");

               };

          }

          return createXHR();

    }

    If语句的每个分支都会为createXHR变量赋值,有效覆盖了原有的函数。

    3、函数绑定

    1.  

    var handler={

          message:"event handler",

          handlerClick:function(event){

               alert(this.message);

          }

    };

    var btn=document.getElementById("my-btn");

    EventUtil.addHandler(btn,"click",function(event){

          handler.handlerClick(event);

    })

    1.  

    EventUtil.addHandler(btn,"click",bind(handler.handlerClick,handler));

    1.  

    EventUtil.addHandler(btn,"click",handler.handlerClick.bind(handler));

    4、防篡改的对象:

    1. 不可扩展对象:

    var person={name:"zhang"};

    //不能再给对象添加属性以及方法

    object.preventExtensions(person);

    person.age=29;

    alert(person.age); //undefined

    1. 密封的对象:

    var person={name:"zhang"};

    //不能再给对象删除属性以及方法

    object.seal(person);

    person.age=29;

    alert(person.age); //undefined

    delete person.name;

    alert(person.name); //zhang

    1. 冻结的对象

    var person={name:"zhang"};

    //既不可扩展也密封

    object.freeze(person);

    person.age=29;

    alert(person.age); //undefined

    delete person.name;

    alert(person.name); //zhang

    person.name="hui";

    alert(person.name);//zhang

    5、拖放:为了元素能够拖放,必须是绝对定位

    var DragDrop=function(){

          var dragging=null;

          diffX=0;

          diffY=0;

          function handleEvent(event){

               //获取事件和目标

            event=EventUtil.getEvent(event);

            var target=EventUtil.getTarget(event);

            //确定事件类型

            switch(event.type){

                  case "mousedown":

                  if(target.className.indexOf("draggable")>-1){

                       dragging=target;

                       diffX=event.clientX-target.offsetLeft;

                    diffY=event.clientY-target.offsetTop;

                  }break;

                  case "mousemove":

                  if(dragging!=null){

                       //指定位置

                       dragging.style.left=(event.clientX-diffX)+"px";

                       dragging.style.top=(event.clientY-diffY)+"px";

                  }break;

                  case "mouseup":

                  dragging=null;

                  break;

            }

          };

          return {

               enable:function(){

                     EventUtil.addHandler(document,"mousedown",handleEvent);

                     EventUtil.addHandler(document,"mousemove",handleEvent);

                     EventUtil.addHandler(document,"mouseup",handleEvent);

               },

               disable:function(){

                     EventUtil.addHandler(document,"mousedown",handleEvent);

                     EventUtil.addHandler(document,"mousemove",handleEvent);

                     EventUtil.addHandler(document,"mouseup",handleEvent);

               }

          }

    }();

  • 相关阅读:
    深入理解java虚拟机(7)---线程安全 & 锁优化
    深入理解java虚拟机(6)---内存模型与线程 & Volatile
    java注解框架
    敏捷软件开发---闲话敏捷
    深入理解java虚拟机(5)---字节码执行引擎
    龙应台写给儿子安德烈的信
    wojilu中的路由
    如何使用豆约翰博客备份专家批量下载新浪微博
    haha
    http://www.jsbreakouts.org/---各种html5框架实现打砖块游戏 breakout
  • 原文地址:https://www.cnblogs.com/zhanghuiyun/p/5161768.html
Copyright © 2011-2022 走看看