首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

求解下部代码的return和其中的一个()

2013-09-06 
求解下面代码的return和其中的一个()div classdraggable styleposition:absolute width:100px hei

求解下面代码的return和其中的一个()
<div class="draggable" style="position:absolute; width:100px; height:100px; background-color:#FF0000"></div>


<script type="text/javascript">
 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;
       }
 },
 
 getEvent:function(event){
          return event ? event : window.event;
 },
 
 getTarget:function(event){
           return event.target || event.srcElement;
 },

 removeHandler: function(element,type,handler){
                if(element.removeEventListener){
                   element.removeEventListener(type,handler,false);
            }else if(element.detachEvent){
                  element.detachEvent("on" + type,handler);
            }else{
                element["on" + type] = null;
           }
     }
};

//
var DragDorp = function(){
    
    var dragging = null;
    var diffX = 0;
    var 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){
                 event = eventUtil.getEvent(event);
                 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.removeHandler(document,"mousedown",handleEvent);
            eventUtil.removeHandler(document,"mousemove",handleEvent);
            eventUtil.removeHandler(document,"mouseup",handleEvent);  
        }
    }

}();

DragDorp.enable();

</script>

求解代码倒数第三行的()是怎么回事,然后倒数第二行的用法是怎么回事。 javascript
[解决办法]
var eventUtil={
}
声明了个函数。

var eventUtil={
}();
马上执行它
[解决办法]
就一个立刻执行然后丢弃的函数,变量只是保存结果。象下面的例子。


var a= function () {
return 100;
}();
alert(a);

[解决办法]
倒数第三行是一个自运行的函数
比如:你去写一个函数但是又想马上运行
一般的是
function aa(){
  //code here
}
aa();
而且这个函数就运行一次,以后就不需要啦,那你可以写成这样
function (){
  //code here
}();
但是如果是在js里面语法不通过,为了让编译通过
(function(){
  //code here
})();
或者
(function(){
  //code here
}());
这两种都可以;
但是你的这种情况呢是属于给变量赋值,所以不叫那个括号也没问题
var aa=function(){
  return "aa";
}();
相当于var aa="aa";因为赋值符号后面的是一个自运行的函数啦


倒数第二行的意思,现在就好解释啦,因为return是一个对象
类比刚才我给的例子:
var DragDorp= {
        enable: function(){
            eventUtil.addHandler(document,"mousedown",handleEvent);
            eventUtil.addHandler(document,"mousemove",handleEvent);
            eventUtil.addHandler(document,"mouseup",handleEvent);


        },
        
        disable: function(){
            eventUtil.removeHandler(document,"mousedown",handleEvent);
            eventUtil.removeHandler(document,"mousemove",handleEvent);
            eventUtil.removeHandler(document,"mouseup",handleEvent);  
        }
    };
所以你倒数第二行应该是
DragDorp.enable();
也就是调用enable方法啦

热点排行