var Drag = {    obj : null,
    init : function()
    {   o.onmousedown = Drag.start;
       .........................
       .........................
       .........................
       o.root.onDragStart = new Function();
    },
    start : function(e)
    {  ...................
       ...................
       o.root.onDragStart(x, y);
    },
    drag : function(e)
    {
    },
    end : function()
    {
    },
    fixE : function(e)
{
}
};从外部导入js文件.这是js文件的主干写法,这种写法中Drag中的变量obj是全局变量,函数中的变量是局部变量???
当我在自己写的函数调用onDragStart函数时,为什么o.root.onDragStart= function(x, y) {},
就能把o.root.onDragStart(x, y);中的值传给function(x, y) {}中的参数??????

解决方案 »

  1.   

    obj是Drag对象的一个属性o.root.onDragStart= function(x, y) {}
    是定义一个函数啊,
    o.root.onDragStart(x, y);
    就是调用函数函数定义方法
    var x = function(xx,yy){}跟
    function xx(xx,yy){}类似参见
    http://software.intel.com/zh-cn/articles/javascript-first-class-citizen-function/?cid=sw:prccsdn229032
      

  2.   

    不知道楼上看过dom-drag.js插件,专门用来拖动元素的插件。基本的函数调用当然很楚.o.root.onDragStart
    已经在dom-drag.js被调用,外部这样写o.root.onDragStart= function(x, y){}只是为了引用内部调用的参数,就像事件中document.onmouseover=function(e){}这儿的e在事件发生时,就被赋值了。